提问人:Yash Padia 提问时间:11/14/2023 最后编辑:Yash Padia 更新时间:11/17/2023 访问量:37
Math.Trunc 函数将该值减少 0.001 [重复]
Math.Trunc function reducing the value by 0.001 [duplicate]
问:
<div id="demo1"></div>
<div id="demo2"></div>
<script>
document.getElementById("demo1").innerHTML = (Math.trunc(1005)/1000).toFixed(3);
</script>
<!-- *The above usage gives the value as* **1.005** -->
<script>
document.getElementById("demo2").innerHTML = (Math.trunc(1.005*1000)/1000).toFixed(3);
</script>
<!-- *The next usage gives the value as* **1.004** -->
<script>
document.getElementById("demo3").innerHTML = (Math.trunc(1.004*1000)/1000).toFixed(3);
</script>
<!-- *The next usage gives the value again as* **1.004** -->
为什么会这样?
由于我使用的是 Math.Trunc(),因此在使用 toFixed() 函数后它应该呈现相同的值,但它的值正在减少。在此处输入图像描述
答:
1赞
PyariBilli
11/14/2023
#1
第一个脚本:(Math.trunc(1005)/1000).toFixed(3)
Math.trunc(1005)
只需截断数字 1005,即 1005。- 然后,将 1005 除以 1000,得到 .
1.005
toFixed(3)
将其正确格式化为 ."1.005"
第二个脚本:(Math.trunc(1.005*1000)/1000).toFixed(3)
1.005 * 1000
由于浮点精度错误,JavaScript 并不完全等于 1005。相反,它会产生一些稍微少的东西,比如 .1004.9999999999999
Math.trunc(1004.9999999999999)
然后将其截断为 .1004
- 将 1004 除以 1000 得到 .
1.004
toFixed(3)
将其正确格式化为 ."1.004"
评论
0赞
Yash Padia
11/17/2023
第三个脚本:(Math.trunc(1.004*1000)/1000).toFixed(3)) 1.004 * 1000 在 JavaScript 中返回 1004,因此这工作正常!明白了!谢谢!
0赞
Yash Padia
11/17/2023
如何避免这种情况并获得预期的结果?有什么方法吗?
评论