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将生成一个整数。