Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/386.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 为什么0.14*100在浏览器中返回不精确的结果?_Javascript_Math_Browser - Fatal编程技术网

Javascript 为什么0.14*100在浏览器中返回不精确的结果?

Javascript 为什么0.14*100在浏览器中返回不精确的结果?,javascript,math,browser,Javascript,Math,Browser,当我在浏览器控制台中尝试0.14*100时(结果在所有浏览器中都是相同的),我得到的结果是14.00000000000000 2。但是,如果我尝试0.14*1000,它将正确返回140 如果它在这两种情况下都返回了近似结果,我只能假设0.14不能用二进制精确表示,但事实似乎并非如此 编辑:不,这不是重复的-他们使用0.1+0.2,这将计算为不精确的数字。同时,0.14是完全精确的,只有当它乘以10/100时才会出现问题,但它对1000有效 编辑:很抱歉,它不精确,但重点是-为什么它在乘以1000

当我在浏览器控制台中尝试
0.14*100
时(结果在所有浏览器中都是相同的),我得到的结果是
14.00000000000000 2
。但是,如果我尝试
0.14*1000
,它将正确返回
140

如果它在这两种情况下都返回了近似结果,我只能假设0.14不能用二进制精确表示,但事实似乎并非如此

编辑:不,这不是重复的-他们使用0.1+0.2,这将计算为不精确的数字。同时,0.14是完全精确的,只有当它乘以10/100时才会出现问题,但它对1000有效


编辑:很抱歉,它不精确,但重点是-为什么它在乘以1000时返回整数?

0.14不能精确地表示为javascript浮点,因此当您乘以100时,将字符串“0.14”转换为浮点所引入的舍入误差会传递到结果中

请尝试使用以下注释
0.14=2582544170319337226.24*2^-64
。你能给我们提供
0.14
的二进制表示吗?提示:如果二进制表示少于64个字母,则乘以2^64将生成一个整数。