Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/google-chrome/4.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/.htaccess/5.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十进制问题_Javascript_Google Chrome - Fatal编程技术网

Javascript十进制问题

Javascript十进制问题,javascript,google-chrome,Javascript,Google Chrome,使用parseFloat方法将DB中的字符串值转换为float并乘以100。但产出看起来很奇怪。下面是我使用的一段代码 parseFloat(upliftPer) * 100 //upliftPer value read from DB and its value is 0.0099 所以当它乘以100得到0.990000000000001时,我想得到0.99,但是一些垃圾值被附加。我也继续在chrome浏览器的控制台日志中做了同样的操作,结果仍然一样。我附上了截图供参考。我需要的解决方案是0

使用parseFloat方法将DB中的字符串值转换为float并乘以100。但产出看起来很奇怪。下面是我使用的一段代码

parseFloat(upliftPer) * 100 //upliftPer value read from DB and its value is 0.0099
所以当它乘以100得到0.990000000000001时,我想得到0.99,但是一些垃圾值被附加。我也继续在chrome浏览器的控制台日志中做了同样的操作,结果仍然一样。我附上了截图供参考。我需要的解决方案是0.0099*100,结果应该是0.99。因为我需要更高的精度,所以我不能应用round/toFixed


这是因为JavaScript内部强制转换为双重类型。由于浮点不准确,总是存在一定程度的噪声。这里有一些关于这个的


您可以使用
toFixed(x)
将其四舍五入,精度可以达到您想要的大小(或者JavaScript允许的大小)。

它既与JavaScript无关,也与任何编程语言无关

这是因为从十进制浮点数到二进制表示的转换:这个过程最终会进入一个无限的过程,该过程必须被截断,因为可用于存储数字的位数有限(因此,计算机内存量有限)

签出转换,看看它告诉您在转换过程中有多少错误

正如他在回答中指出的那样,你可以使用
toFixed(x)
对你的号码进行四舍五入,并清除垃圾