Google Sheets Less than or equal (<=) provide wrong result [duplicate] - google-sheets

This question already has answers here:
Difference in value of two same time google Sheets [duplicate]
(1 answer)
Is floating point math broken?
(31 answers)
Why are floating point numbers inaccurate?
(5 answers)
Closed 8 months ago.
Formula 0<=(1.36*100/1.36)-100 returns FALSE while expects TRUE.
But
0<=(1.26*100/1.26)-100 returns correct result TRUE.
Why?

if you run:
=(1.36*100/1.36)-100
and expand decimal places you will get:
which is totally fine even if you do not expect such behavior. this is due to how google sheets stores the numbers and this "nonsense" is called "rounding error" (yet it is not an error)
see: https://stackoverflow.com/a/72230592/5632629
in your case try:
=0<=ROUND((1.36*100/1.36)-100)

Related

Google Sheets SUM() does not return zero, but an extremely small number instead? [duplicate]

This question already has an answer here:
Google Sheet yields infinitesimal number as remainder of an integer/whole number
(1 answer)
Closed 3 months ago.
I have a Google Sheet with the following values:
12.4840
-8.1870
-0.9630
-3.3210
3.4550
0.3140
3.3470
-7.1290
If I SUM() these, the expected result is 0 (zero). But it is not. The value that Google Sheets returns is actually 0.000000000000000888178419700125. This is super weird, as none of the values have more than 4 decimals.
I found this out after debugging for hours because some conditional formatting is supposed to color every cell that has a 0 value, but this (and some other) cells just would not change color accordingly.
I have an example here: Stackoverflow Google Sheet. Can someone please explain me what is going wrong here, and how I can get the SUM() to return true zero? I have tried everything (format input as numbers, as text, force to numbers in sum() formula) but nothing seems to work.
[Update] I have added a few more examples in the Sheet.
actually, this is not a bug and it is pretty common. its called floating point "error" and in a nutshell, it has to do things with how decimal numbers are stored within a google sheets (even excel or any other app)
more details can be found here: https://en.wikipedia.org/wiki/IEEE_754
to counter it you will need to introduce rounding like:
=ROUND(SUM(A1:A))
this is not an ideal solution for all cases so depending on your requirements you may need to use these instead of ROUND:
ROUNDUP
ROUNDDOWN
TRUNC
TEXT

Precision getting wrong in dart, how to fix that? [duplicate]

This question already has answers here:
Is floating point math broken?
(31 answers)
Closed 1 year ago.
My dart code:
main()
{
print("sample data");
print(700*0.002);
print(7000*0.002);
print(70*0.002);
}
The output:
sample data
1.4000000000000001
14.0
0.14
Why the output is different in case of 700?
How to fix that?
This is floating-point aliasing due to their IEEE 754 representation and not unique to dart
Python:
>>> 700*0.002
1.4000000000000001
Just display them with something float-aware and the precision will be right or move your math into an integer space

Can anyone explain why this comparison return true in ruby? [duplicate]

This question already has answers here:
Why does floating-point arithmetic not give exact results when adding decimal fractions?
(31 answers)
Closed 4 years ago.
I wrote this in rails console
(3352.3744333333334==3352.3744333333335) #true
and result was true
Notes:
I'm using ruby 2.4.0 and rails 5.0.1
I’m not an expert in ruby but my best answer is that the code is printing out all of the numbers but only comparing like the first 10 digits meaning 3352.374433 to 3352.374433 and it’s not going further than that. This would be the most logical explanation In my mind

float unusual behaviour Objective c [duplicate]

This question already has answers here:
Trouble with floats in Objective-C
(3 answers)
Closed 7 years ago.
I am getting an unusal issue with float in Objective C. I enter 100.1 and i get 100.100002 shouldn't it be something like 100.100000 .
Following is the code
float temp=100.1;
NSLog(#"%f",temp);
100.100000
Can someone guide me what am i doing wrong or how to fix it ? I cannot use fixed decimal places i-e i cannot just use 100.10 . I need all decimal places .
Because that is a fundamental part of what happens when you represent an arbitrary floating point value in binary. The number of binary digits is limited, therefore rounding occurs. Depending on your needs, you might be better off using NSDecimalNumber.
Try using double instead;
double temp=100.1;
NSLog(#"%.8f",temp);
100.10000000
It is an issue with representation accuracy. I do not think it will be a problem to use double instead.

Length of a sequential table in Lua may skip indices? [duplicate]

This question already has answers here:
An Interesting phenomenon of Lua's table
(2 answers)
Closed 9 years ago.
In Lua is seems that if a single numeric key is missing from the table, the length still continues counting:
> print(#{[1]=1,[2]=2,[4]=4})
4
But this skipping two indices stops at the break
> print(#{[1]=1,[2]=2,[5]=5})
2
It's not just the unconvential constructor. Even if an skipped index is created after the creation of the table it still counts past it, so long the break is only one.
> x={1,2}
> print(#x)
2
> x[4]=4
> print(#x)
Is this an implementation error or is this how Lua supposed to work. Why is it like this? Any references to documentation of this would be interesting.
This is how it works. The length of a table is only defined if the table is a sequence, with no holes. See http://www.lua.org/manual/5.2/manual.html#3.4.6 .

Resources