javascript - Javascript - toFixed() 0.5 问题
问题描述
我有一个案例,我想将小数点四舍五入到小数点后 2 位。现在 .toFixed(2) 工作正常,但是对于 0.455 我想得到 0.45 而不是 0.46
有什么快速的解决方案吗?如果能解决这个问题,我可以使用 Lodash。
例如,我想要以下内容。
0.455 > 0.45
0.456 > 0.46
0.4549 > 0.45
解决方案
乘以 100,用 floor 向下舍入,用 100 除,用 toFixed 格式化。
function roundDownToFixed2(v) {
return (Math.floor(v * 100) / 100).toFixed(2);
}
> roundDownToFixed2(0.455)
'0.45'
一个更通用的版本是
function roundDownToFixed(v, d=2) {
const mul = Math.pow(10, d);
return (Math.floor(v * mul) / mul).toFixed(d);
}
> roundDownToFixed(0.455, 2)
'0.45'
> roundDownToFixed(0.4555, 3)
'0.455'
推荐阅读
- reactjs - 为什么我的 React 网站大小调整不正确?
- c# - 获取 Http 请求,并在 lit 的每个结果之间暂停
- python - 从检查点加载 tensorflow 模型不会更新参数
- python - Python:为什么将不同类型的参数传递给类型定义的函数不会引发任何错误?类型注释只是为了可读性吗?
- c# - Blazor 无法从其他文件夹中找到引用的组件
- ruby-on-rails - 在 Rails 中,如何使用包含返回关联记录?
- flutter - 使用 Flutter-Packages 制作过滤器小部件
- javascript - 节点 https.get 如何验证 401
- sql - 使用交叉应用时 SQL Server 计算百分比
- django - 如何使用隐藏逻辑通过 UpdateView 更新 CustomUser 值