如何在从字符串转换时在javascript中添加值

问题描述 投票:0回答:2

我有一个字符串,我尝试将其转换为十进制数,包含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);
}
javascript double decimal
2个回答
1
投票

那么你的问题是放置toFixedtoFixed返回String不是数字

console.log(typeof (1).toFixed(2))

所以这里你的ConvertToDouble函数返回string0 + 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)
}

0
投票

你可以使用类似于你的Number.parseFloatNumber.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
© www.soinside.com 2019 - 2024. All rights reserved.