Hi,
Im trying to display the answer to a BMI calculation, but I only want it to
2 decimal places, otherwise the long list of decimals can be confusing.
ie. "Mother's BMI is <output....>"
I can only find on the help pages how to round to a whole number. Is there
a way of doing this for 2 decimal places?
Thanks
Natasha
Hi Natasha,
Please take a look at the final paragraph of the Rounding Numbers
https://confluence.dimagi.com/display/commcarepublic/Common+Logic+and+Calculations#CommonLogicandCalculations-Roundingnumbers
section
of the logic and calculations page.
Thanks,
Will
···
On Mon, Dec 8, 2014 at 3:02 AM, Natasha Lelijveld < natasha.lelijveld@gmail.com> wrote:
Hi,
Im trying to display the answer to a BMI calculation, but I only want it
to 2 decimal places, otherwise the long list of decimals can be confusing.
ie. "Mother's BMI is <output....>"
I can only find on the help pages how to round to a whole number. Is there
a way of doing this for 2 decimal places?
Thanks
Natasha
--
You received this message because you are subscribed to the Google Groups
"commcare-users" group.
To unsubscribe from this group and stop receiving emails from it, send an
email to commcare-users+unsubscribe@googlegroups.com.
For more options, visit https://groups.google.com/d/optout.
Hi Will,
thanks.
I was trying to follow those instructions :
For example, for a precision of 0.1, constant = 1 / precision * 2 = 1 / 0.1
- 2 = 20. Consequently use int ( ( /data/value20 +1 ) div 20 )*.
But I thought because the logic has "int" at the start, doesn't this mean
it will just come back with a whole number?
Hi Natasha,
I believe that formula is slightly wrong. The div 20 should be outside the
int() expression. It should be:
int ( /data/value20 +1 ) div 20 *
I updated the help site accordingly.
Regards,
Nick
Nick Nestle
Project Manager | Dimagi South Africa
+27 79 439 6081
···
On Tue, Dec 9, 2014 at 9:58 AM, Natasha Lelijveld < natasha.lelijveld@gmail.com> wrote:
Hi Will,
thanks.
I was trying to follow those instructions :
For example, for a precision of 0.1, constant = 1 / precision * 2 = 1 /
0.1 * 2 = 20. Consequently use int ( ( /data/value20 +1 ) div 20 )*.
But I thought because the logic has "int" at the start, doesn't this mean
it will just come back with a whole number?
--
You received this message because you are subscribed to the Google Groups
"commcare-users" group.
To unsubscribe from this group and stop receiving emails from it, send an
email to commcare-users+unsubscribe@googlegroups.com.
For more options, visit https://groups.google.com/d/optout.
Hi Natasha,
sorry, to correct myself, that example was to round to the nearest .5. I
added a section for rounding to certain decimal places (and pasting below
here):
···
=============
Round a number to a certain decimal place
You can use the same principles to round to the nearest .1, .01, .001, etc.
with the following formula:
Round to nearest decimal: * int(/data/value10 + .5) div 10
To round to two decimals change the 10's in the formula above to 100. To
three decimals change them to 1000, etc.
Nick Nestle
Project Manager | Dimagi South Africa
+27 79 439 6081
On Tue, Dec 9, 2014 at 10:09 AM, Nick Nestle nnestle@dimagi.com wrote:
Hi Natasha,
I believe that formula is slightly wrong. The div 20 should be outside
the int() expression. It should be:
int ( /data/value20 +1 ) div 20 *
I updated the help site accordingly.
Regards,
Nick
Nick Nestle
Project Manager | Dimagi South Africa
+27 79 439 6081
On Tue, Dec 9, 2014 at 9:58 AM, Natasha Lelijveld < natasha.lelijveld@gmail.com> wrote:
Hi Will,
thanks.
I was trying to follow those instructions :
For example, for a precision of 0.1, constant = 1 / precision * 2 = 1 /
0.1 * 2 = 20. Consequently use int ( ( /data/value20 +1 ) div 20 )*.
But I thought because the logic has "int" at the start, doesn't this mean
it will just come back with a whole number?
--
You received this message because you are subscribed to the Google Groups
"commcare-users" group.
To unsubscribe from this group and stop receiving emails from it, send an
email to commcare-users+unsubscribe@googlegroups.com.
For more options, visit https://groups.google.com/d/optout.
Hi Nick,
Thank you - that's working perfectly now
Best wishes
···
On Tuesday, 9 December 2014 10:24:54 UTC+2, Nick Nestle wrote:
>
> Hi Natasha,
>
> sorry, to correct myself, that example was to round to the nearest .5. I
> added a section for rounding to certain decimal places (and pasting below
> here):
>
>
> =============
>
> *Round a number to a certain decimal place*
> You can use the same principles to round to the nearest .1, .01, .001,
> etc. with the following formula:
>
> Round to nearest decimal: * int(/data/value*10 + .5) div 10*
>
> To round to two decimals change the 10's in the formula above to 100. To
> three decimals change them to 1000, etc.
>
> Nick Nestle
> Project Manager | Dimagi South Africa
> +27 79 439 6081
>
>
> On Tue, Dec 9, 2014 at 10:09 AM, Nick Nestle <nne...@dimagi.com > wrote:
>
>> Hi Natasha,
>>
>> I believe that formula is slightly wrong. The div 20 should be outside
>> the int() expression. It should be:
>>
>> *int ( /data/value*20 +1 ) div 20 *
>>
>> I updated the help site accordingly.
>>
>> Regards,
>> Nick
>>
>> Nick Nestle
>> Project Manager | Dimagi South Africa
>> +27 79 439 6081
>>
>>
>> On Tue, Dec 9, 2014 at 9:58 AM, Natasha Lelijveld <natasha....@gmail.com > wrote:
>>
>>> Hi Will,
>>>
>>> thanks.
>>>
>>> I was trying to follow those instructions :
>>>
>>> For example, for a precision of 0.1, constant = 1 / precision * 2 = 1 /
>>> 0.1 * 2 = 20. Consequently use *int ( ( /data/value*20 +1 ) div 20 )*.
>>>
>>>
>>> But I thought because the logic has "int" at the start, doesn't this
>>> mean it will just come back with a whole number?
>>>
>>> --
>>> You received this message because you are subscribed to the Google
>>> Groups "commcare-users" group.
>>> To unsubscribe from this group and stop receiving emails from it, send
>>> an email to commcare-user...@googlegroups.com .
>>> For more options, visit https://groups.google.com/d/optout.
>>>
>>
>>
>