gpt4 book ai didi

Javascript:将非常大和非常小的数字转换为固定的人类可读字符串

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

我有以下我认为会转换非常大的函数,例如 1e+24并且非常小,例如 1e-18数字到固定字符串,例如,1000000000000000000000000:

    convertExponentialToDecimal (exponentialNumber) {
// Sanity Check - i.e., is it exponential number?
const str = exponentialNumber.toString()
if (str.indexOf('e-') !== -1) {
const exponent = parseInt(str.split('-')[1], 10)
return exponentialNumber.toFixed(exponent)
}
if (str.indexOf('e+') !== -1) {
const exponent = parseInt(str.split('+')[1], 10)
return exponentialNumber.toFixed(exponent)
}
return exponentialNumber
}
但是,对于非常大的数字 - 该过程似乎不起作用......
即,1e+24 的转换产生 1e+24,但 1e-18 产生 0.0000000000000000001 正如预期的那样。
任何人都可以发现明显的问题,或者对这种情况有任何指示,甚至是他们自己的工作解决方案......
如果这是任何见解 - 它适用于小于 1e+21 的任何内容......

最佳答案

对于“非常大”的部分:

  if (str.indexOf('e+') !== -1) {
let [a,b] = str.split('+')
a = a.slice(0,-1)
if (a.indexOf('.') !== -1) {
b = parseInt(b) - (a.length - a.indexOf('.') -1)
}
return a.replace('.','')+"".padEnd(b,0)
}
对于你的“非常小的”部分(虽然这需要测试,它适用于我的例子,但我没有经历极端情况):
if (str.indexOf('e-') !== -1) {
const [a,b] = str.split('-')
return '0.'+a.slice(0,-1).padStart(b,0).replace('.','')
}

关于Javascript:将非常大和非常小的数字转换为固定的人类可读字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64789223/

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