gpt4 book ai didi

javascript float 动态精度?

转载 作者:行者123 更新时间:2023-11-28 17:33:25 25 4
gpt4 key购买 nike

如何获得 float 的动态精度?

举例说明我需要什么:

0.00019400000001.dynamicPrecision() //0.000194
0.0001940001.dynamicPrecision() //0.000194
0.0001941.dynamicPrecision() //0.0001941
0.0194.dynamicPrecision() //0.0194
0.01940000.dynamicPrecision() //0.0194

(最后不要有无用的零,这一点很重要)

我无法使用 toFixed 或 toPrecision,因为有效数字可能会更改且未知。那么如何编写动态精度的 dynamicPrecision 方法呢?

最佳答案

虽然您的要求有点可疑,但一种方法是获取小数部分,然后将其与原始值进行比较。如果存在某个阈值百分比不同,请将其视为答案。

const f = (v, threshold = .9999) => {
let shift = 1;
let part;

do {
shift *= 10;
part = Math.floor(v * shift) / shift;
} while (part / v < threshold);

return part;
}

[0.194, 0.194000001, 0.19401, 0.194101]
.forEach(v => console.log(f(v)));

这使用实际数学来确定有效数字。

基本上,对于每一步,它都会多取一位数字并将其与值进行比较。如果在阈值内,则返回。

对于 1.9410001 它将:

部分 = 1.9 部分 = 1.94 part = 1.941//part/v>阈值,返回

然后可以配置阈值。 .9999 表示与原始值99.99%相同。

关于javascript float 动态精度?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49734046/

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