javascript 如何在JS中正确处理浮点数?

bf1o4zei  于 2023-06-28  发布在  Java
关注(0)|答案(4)|浏览(193)

在JS中,我有一个来自PHP的浮点数,如下所示:
var number = 2,206.00
在JS中,我需要使用parseFloat这个数字。
所以我尝试了parseFloat(number),但它只给予2。那么,如何得到2206.00而不是2呢?

iswrvxsc

iswrvxsc1#

Number.parseFloat是与globalThis.parseFloat相同的函数对象。
如果globalThis.parseFloat遇到以下字符:

  • 加号或,
  • 负号或,
  • 小数点或者,
  • 指数(Ee

...它返回该字符之前的值,忽略无效字符及其后面的字符。第二个小数点也会停止分析。
因此,下面打印2。这似乎是你的问题。

console.log(parseFloat('2,206.00')) // 2

解决方案:使用字符串操作删除数字中的逗号(在解析它之前实际上是String)。

console.log(parseFloat('2,206.00'.replaceAll(',', ''))) // 2206

如果需要将值存储为数字,但将其呈现为格式化字符串,则可能需要Number#toFixed来呈现小数点后的值:

console.log((2206).toFixed(2)) // '2206.00'

最后一点:注意本地化,因为有些国家使用逗号表示小数点,小数点用于数字分组。正如@t.niese所说:存储数值而不进行本地化,然后在应用表面应用本地化。但这是一个更广泛、更复杂的主题。

qgzx9mmu

qgzx9mmu2#

你必须先删除逗号,然后使用parseFloat
在点后大约2个小数点,我看到你在PHP中使用number_format($myNumber, 2),所以在JS中使用.toFixed(2)

var number = '2,206.00';
var result = parseFloat(number.replace(/,/g, '')).toFixed(2);
console.log(result);
2vuwiymt

2vuwiymt3#

首先,你目前拥有的东西很可能会在JS中触发意外数字错误。
生成的值似乎来自number_format() PHP函数,该函数返回一个字符串。此外,var number变量也应该被认为是一个字符串,因为我们有一个字符串格式。
所以首先你应该在var number = '2,206.00'后面加上引号,你必须让字符串像浮点数一样,以便将其解析为浮点数,所以我们应该用空字符串替换,,以便数字变成2206.00number = number.replace(",","")。最后,现在应该完成解析,以便将类似float的字符串转换为实际的float parseFloat(number)
完整代码:

var number = '2,206.00';
number.replace(",","");
number = parseFloat(number);
r1wp621o

r1wp621o4#

好的,基本上你想要一个小数点后的两位数,比如(20.03),试试这个

parseFloat(number).toFixed(2)

相关问题