我有以下虚拟测试脚本:
function test() {
var x = 0.1 * 0.2;
document.write(x);
}
test();Run Code Online (Sandbox Code Playgroud)
这将打印结果0.020000000000000004,只应打印0.02(如果您使用计算器).据我所知,这是由于浮点乘法精度的误差.
有没有人有一个很好的解决方案,以便在这种情况下,我得到正确的结果0.02?我知道有类似的功能toFixed或舍入将是另一种可能性,但我想真正打印整个数字没有任何切割和舍入.只是想知道你们其中一个人是否有一些漂亮,优雅的解决方案.
当然,否则我会转到大约10位左右.
我可以在JavaScript中使用什么十进制类型?它不受支持(0.1 + 0.2 !== 0.3),我需要它来表示银行/金融应用程序中的确切值.请参阅JavaScript的状态和未来,以获得良好的读取和JavaScript背后的脏细节以及它(缺乏)对十进制算术的支持.
"十进制",我的意思是:
BigDecimal在Java中),或decimal在C#中).那么,使用十进制值的库或解决方案是什么?谢谢!
我试图从十进制值中提取积分和小数部分(两个部分应该是整数):
decimal decimalValue = 12.34m;
int integral = (int) decimal.Truncate(decimalValue);
int fraction = (int) ((decimalValue - decimal.Truncate(decimalValue)) * 100);
Run Code Online (Sandbox Code Playgroud)
(为了我的目的,十进制变量最多包含2个小数位)
有没有更好的方法来实现这一目标?
如何使用 Javascript 计算实数的小数位数(不是数字)?
function countDecimals(number) {
}
Run Code Online (Sandbox Code Playgroud)
例如,给定 245.395,它应该返回 3。