I am doing a simple flash exercise for my job which involves learning about "significant figures" in Maths.For the first box I want the user to input a number which always has a range of 2 decimal places minimum. Then the user chooses how many decimal places the end result is. For example entering 2.759, a user then puts a random number, lets say 2 decimal places and the final result is 2.76. Is there any way of doing this as I am struggling to compose one with the Maths functions available.
Thanks in advance
If I understood you right (I'm German so sometimes it's a bit tricky to understand all the Mathematical terms in English
You need to bring every number you don't want to be rounded before the point so let's say you have 2.759 and want 2.76:
Math.round(2.759*100)/100 = 2.76
if you want it to be one number behind the point:
Math.round(2.759*10)/10 = 2.8
Just choose some 10^x according to how many decimal places you like... got the idea?
because 1.5 has two significant figures
1.5000 has 5sf
.00000015 has 2sf
1.0000005 has 8sf
500 has only one! that's a tricky one
50. has two! ugh.
try telling a program that, it can be a pain.
it boils down to
Leading zeros don't count
Trailing zeros do, as long as they are followed by a decimal point, or they follow the decimal point
Middle zeros do
you have to capture the number as a string, evaluate it's value and store that, then crop any leading zeros and count the length of the remaining string without the decimal.
Why do we need sig figs?
the idea is that if you know it's 3383.52 miles to where you are going, and you set you cruise control for 55 mph, how long does it take you to get there?
If you said 61.51854545 hours, you are pretending to know more about the situation than you do, that is, do you really know you arrival time to within a fraction of a second?
So how confident are you? Well, the number in you data with the fewest sfs is 55, which has 2.
So your answer should be 62 hours.
Are you ready for the really odd bit? What if it's a round trip? When you multiply by 2 to get the answer, doesn't 2 just have 1sf?! so do you lose data? No you don't, actually. In this case 2 is not data, it's a pure number, and it's assumed to be 2.000000000000000000000000, or however many trailing zeros are needed to match the precision of the data.
Originally posted by ironmallet you have to capture the number as a string, evaluate it's value and store that, then crop any leading zeros and count the length of the remaining string without the decimal.
How might you do that.
I'm creating a program right now where this would come in handy. Sometimes the output is of the magnitude 10^-8 and sometimes it's 10^-4. Right now I'm using the Math.round(value*100000000000)/100000000000 to make sure I get a few sig figs if it is 10^-8.
If that was confusing, this is what I mean.
Depending out the numbers input into the equation, the output can be: