Force not to round a calculation result in EDC/CDMS
In Castor, a calculation used to perform mathematical operations applies rounding to two decimals by default.
For example, we have two variables and we know that the result of adding them up should be 1392.43460062. We create our calculation in Castor:
var measure1 = {my_variable_1}; var measure2 = {my_variable_2}; measure1 + measure2;
The result of this calculation in Castor EDC will be 1392.43
To force to show all the decimal positions use the following code, where you replace {my_variable_1} and {my_variable_2} with your own variables:
'##allowempty##'; '##setemptytozero##'; var myNum = {my_variable_1} + {my_variable_2}; function countPlaces(myNum) { var text = myNum.toString(); var index = text.indexOf("."); return index == -1 ? 0 : (text.length - index - 1); } myNum.toPrecision(countPlaces(myNum))
The result of this calculation will be 1392.43460062 instead of 1392.43
How does it work?
First, we declare our sum variable. Then we create a function that:
- converts the result of the addition to string
- counts the characters after the point (decimals)
- finally, with myNum.toPrecision(countPlaces(myNum)) we are forcing the result of myNum to be shown with as many decimals as specified within the parentheses. In this case, this will be our variable for the length captured in the previous step.