gpt4 book ai didi

javascript - 使用不四舍五入的 Intl.NumberFormat

转载 作者:行者123 更新时间:2023-12-03 07:07:51 29 4
gpt4 key购买 nike

我正在使用 Intl.NumberFormat格式化数字:

const formatter = new Intl.NumberFormat('en-US', {
minimumFractionDigits: 1,
maximumFractionDigits: 4,
minimumSignificantDigits: 1,
maximumSignificantDigits: 4
})

formatter.format(0.99999) // results: '1'. desired result: '0.9999'
formatter.format(0.006393555) // results: '0.006394'. desired result: '0.006393'
formatter.format(0.9972620384752073) // results: '0.9973'. desired result: '0.9972'
formatter.format(12345.67) // results: '12,350'. desired result: '12,345.67'
formatter.format(200001) // results: '200,000'. desired result: '200,001'
如您所见,数字正在自动四舍五入,这在我的情况下是不受欢迎的行为。
有没有办法告诉格式化程序不要舍入?
我没有 found any option或组合选项来实现这一目标。

最佳答案

NumberFormat 将始终向上取整,但您可以使用这一额外功能。

function roundDownSignificantDigits(number, decimals) {
let significantDigits = (parseInt(number.toExponential().split('e-')[1])) || 0;
let decimalsUpdated = (decimals || 0) + significantDigits - 1;
decimals = Math.min(decimalsUpdated, number.toString().length);

return (Math.floor(number * Math.pow(10, decimals)) / Math.pow(10, decimals));
}
接着
const formatter = new Intl.NumberFormat('en-US', {
minimumFractionDigits: 1,
maximumFractionDigits: 4,
minimumSignificantDigits: 1,
maximumSignificantDigits: 4
})
结果:
formatter.format(roundDownSignificantDigits(0.99999,4)); // "0.9999"
formatter.format(roundDownSignificantDigits(0.006393555,4)); // "0.006393"
formatter.format(roundDownSignificantDigits(0.9972620384752073,4)); // "0.9972"

关于javascript - 使用不四舍五入的 Intl.NumberFormat,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64330575/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com