Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby-on-rails-4/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 6点打固定回合,为什么不是5点?_Javascript - Fatal编程技术网

Javascript 6点打固定回合,为什么不是5点?

Javascript 6点打固定回合,为什么不是5点?,javascript,Javascript,我期望50.65。toFixed(1)将返回“50.7”,因为它在0.05处循环,但得到了“50.6” 我测试了另一个案例:50.66.toFixed(1)它返回'50.7' 为什么不是在5点钟?有什么想法吗 我读过,但不明白 console.log(100.15.toFixed(1)) // 100.2 (OK) console.log(123.45.toFixed(1)) // 123.5 (OK) console.log(50.65.toFixed(1)) // 50.6 (what??)

我期望
50.65。toFixed(1)
将返回
“50.7”
,因为它在0.05处循环,但得到了
“50.6”

我测试了另一个案例:
50.66.toFixed(1)
它返回
'50.7'

为什么不是在5点钟?有什么想法吗

我读过,但不明白

console.log(100.15.toFixed(1)) // 100.2 (OK)
console.log(123.45.toFixed(1)) // 123.5 (OK)
console.log(50.65.toFixed(1)) // 50.6 (what??)

toFixed
的舍入方法在中描述为“设n为一个整数,其中n/10^f-x尽可能接近于零。如果有两个这样的n,则选择较大的n。”

506/10-50.65
507/10-50.65

您可以使用以下工具进行测试:

if(数学abs(506/10-50.65)}
我不明白这个问题。你希望这些代码行返回什么?我刚刚编辑了这个问题。但它还没有得到社区的批准。实际的问题是,为什么parseFloat()将数字舍入到第5/100位,Math.round()将数字舍入到上限?
toFixed(1)
将数字舍入到小数点后1位,
toFixed(0)
就是您要寻找的。这种行为源于浮点数的不精确性。数学绝对值(50.65-50.6)==0.04999。。。和Math.abs(50.65-50.7)=0.0500。。。因此,最接近的一轮下降到50.6这一行为在本页上有所说明:所以
60.15.toFixed(1)
=60.1,
70.15.toFixed(1)
=70.2这是。。。。“嗯,我有点胡说八道。”本·斯蒂芬斯说,但显然这是最准确的。它减少了舍入误差。如果你想避免意外,你可以在之前讨论:-)我相信你对规范中考虑的任何用例都是正确的,但是我想不出我遇到过的任何实际场景中我想要这种行为。在Javascript中,一切都是可能的。欢迎来到Javascript魔术秀,其中
0.5+0.1==0.6
为真,但
0.1+0.2==0.3
为假。如果
50.65.toFixed(1)
Math.abs(506/10-50.65)=0.04…
Math.abs(505/10-50.65)=0.14…
因此选择
506
as
n
b=6
因此它返回
50.6