我有一个字符串,我尝试将其转换为十进制数,包含16位小数。然后我想将该数字添加到数字0应该是:
30280.9529335
但我得到:030280.9529335
你是如何在javascript中正确执行此操作的?
var totalnumber = 0; var str = "30280.9529335";
totalnumber = totalnumber + ConvertToDouble(str);
console.log(totalnumber); //030280.9529335
function ConvertToDouble(x) {
return Number.parseFloat(x).toFixed(16);
}
那么你的问题是放置toFixed
,toFixed
返回String
不是数字
console.log(typeof (1).toFixed(2))
所以这里你的ConvertToDouble
函数返回string
和0
+ some numeric string
将作为连接而不是添加
var totalnumber = 0; var str = "30280.9529335";
totalnumber = totalnumber + ConvertToDouble(str);
console.log(totalnumber.toFixed(16)); //030280.9529335
function ConvertToDouble(x) {
return Number.parseFloat(x)
}
你可以使用类似于你的Number.parseFloat
和Number.parseInt
。您错误地使用了toFixed
。
toFixed()
方法将数字转换为字符串,保持指定的小数位数。如果所需的小数位数高于实际数字,则添加空值以创建所需的小数位数。
例:
let a = "30280.9529335";
console.log(parseFloat(a))
// 30280.9529335
let totalnumber = 0;
let str = "30280.9529335";
function convert(a, b) {
try {
return (Number.parseInt(a) + Number.parseFloat(b)).toFixed(16)
} catch(error) {
return error;
}
}
function convertb(a, b) {
try {
return Number.parseInt(a) + Number.parseFloat(b)
} catch(error) {
return error;
}
}
console.log(convert(totalnumber, str))
console.log(convertb(totalnumber, str))
你也可以使用bigInts
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/BigInt
const theBiggestInt = 9007199254740991n;
const alsoHuge = BigInt(9007199254740991);
// ↪ 9007199254740991n
const hugeString = BigInt("9007199254740991");
// ↪ 9007199254740991n
const hugeHex = BigInt("0x1fffffffffffff");
// ↪ 9007199254740991n
const hugeBin = BigInt("0b11111111111111111111111111111111111111111111111111111");
// ↪ 9007199254740991n