繁体   English   中英

javascript浮点值问题,精度浮点超过6位数字

[英]javascript floating value issue with precision floating point more than 6 digits

在这里,我对javascript浮点数感到震惊,我需要显示浮点数的实际值(最多8个小数点),但是浏览器的JS引擎将0.00000001之类的值转换为1e-8。

 function toCustomString(numberToFormat) { return '' + Number(numberToFormat.toFixed(8).replace(/\\,/g, ',')); }; // Floating value with 6 digits var value1 = 0.000001; console.log(toCustomString(value1)) // Floating value with 8 digits var value2 = 0.00000001; console.log(toCustomString(value2) + " <-- this is wrong") // I want here output should be 0.00000001 // Floating value with 8 digits but value greate than 0.000001 var value3 = 0.00010000; console.log(toCustomString(value3)) 

如果要完全控制digits ,请查看https://github.com/MikeMcl/decimal.js

如果您不希望尾随0 ,则只需使用正则表达式将其删除:

 console.log( '"trailing 0":', Number("0.00010000").toFixed(8) ); console.log( '"no trailing 0":', Number("0.00010000").toFixed(8).replace(/0*$/,'') ); 

并用0.0000000001

 console.log( '"trailing 0":', Number("0.0000000001").toFixed(8) ); console.log( '"no trailing 0":', Number("0.0000000001").toFixed(8).replace(/0*$/,'') ); 

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM