ROUND 函数计算错误?
ROUND functions calculating wrong?
我真的很想知道为什么 ROUND
函数会这样计算。我不认为,我在过去 40 年里发现了别人没有的东西,只是我不敢相信它是这样工作的,我真的很想知道这其中的原因。
当然,我尝试在这里和网络上搜索,但我发现只有用户创建了圆函数问题。
当我想检查 MySql
.
中的 ROUND
函数语法时,整个事情都来自这里
我在 this 网站上找到了这个解释。
我真的很奇怪,当我想四舍五入到2位小数时,函数是否只检查第三位小数,而不解析第四位。
所以我在MySql
和PHP
做了一个测试,结果是一样的。
var_dump(round(4.4449, 2));
var_dump (round(4.445, 2));
输出:
float 4.44
float 4.45
怎么可能?我想:
4.4449
^^ <-- this 49 should be 50 so 5.
好吧,我真的不想用 PHP 计算火箭的弹道,但如果是真钱,我认为网上商店有数百万笔交易,很多积少成多。
请告诉我,有些东西,因为我见树不见林。
没错,四舍五入说的很清楚"if decimal is bigger or equal 0,5, raise it to 1, otherwise set it to 0"。
是0,4999999999999 >= 0,5
吗?
我真的很想知道为什么 ROUND
函数会这样计算。我不认为,我在过去 40 年里发现了别人没有的东西,只是我不敢相信它是这样工作的,我真的很想知道这其中的原因。
当然,我尝试在这里和网络上搜索,但我发现只有用户创建了圆函数问题。
当我想检查 MySql
.
ROUND
函数语法时,整个事情都来自这里
我在 this 网站上找到了这个解释。
我真的很奇怪,当我想四舍五入到2位小数时,函数是否只检查第三位小数,而不解析第四位。
所以我在MySql
和PHP
做了一个测试,结果是一样的。
var_dump(round(4.4449, 2));
var_dump (round(4.445, 2));
输出:
float 4.44
float 4.45
怎么可能?我想:
4.4449
^^ <-- this 49 should be 50 so 5.
好吧,我真的不想用 PHP 计算火箭的弹道,但如果是真钱,我认为网上商店有数百万笔交易,很多积少成多。
请告诉我,有些东西,因为我见树不见林。
没错,四舍五入说的很清楚"if decimal is bigger or equal 0,5, raise it to 1, otherwise set it to 0"。
是0,4999999999999 >= 0,5
吗?