是否可以返回浮点数,小数点后第2位为0?

时间:2018-10-11 14:41:19

标签: javascript floating-point frontend floating-accuracy

我正在努力将其纳入Google Analytics(分析),并且其中一项指导原则是,到目前为止价格都是浮动的。我使用parseFloat()解决了问题,但是对于以00结尾的值,我必须返回两个小数位。例如:(100.00或208.00)。返回浮点值时,它将删除以0结尾的值。

var product_price =“ 100.00”; 值= parseFloat(product_price);

float = 100的结果

我使用.toFixed(2)方法放置两个小数位,但返回为String。

好吧,我已经在多个地方进行了研究,找到的所有解决方案以及我知道的解决方案都将返回一个字符串。我认为从技术上讲这是不可能的。但我想确保这真的不可能。

最后一个.00结束后的绝对值更改。

要弄清parseFloat,请返回一个值,该值的floane点为100.99,而现在不是100.00。

很抱歉以前用葡萄牙语写过这个问题。

谢谢

3 个答案:

答案 0 :(得分:2)

数字值本身没有小数位的概念,直到您要打印它为止。如果不打印出来,则数字类型没有固定的小数位数没有任何意义。因此,只有将数字转换为String时,小数位才起作用。

只要您想“看到” 100.00,就已经意味着convert the number with value = 100 to a String with 2 decimal places让您“看到”。您只能看到String,却看不到数字。

答案 1 :(得分:1)

您正在混淆两件事:数字的值及其显示方式。

100、100.0、100.00(甚至1E2、10E1、0.1E3)是相同数值的视觉表示。

我将撇开一个事实,即在数学意义上,计算机数值并不总是与实数相同。

在JavaScript中,parseFloat返回numeric类型。 numeric的值默认显示为 ,不带零。也就是说,当您执行console.log(100)时,100也会转换为字符串“ 100”,而console.log(100.00)也会如此,数字也会转换为字符串...“ 100”

但是您始终可以通过强制显示小数点来指定字符串表示形式(.toFixed()就是这样做的。)

请参阅:Format number to always show 2 decimal places

您可以在任何toFixed(2)绑定(变量)上简单地使用numeric来实现所需的功能。

let a = 100;
console.log(a.toFixed(2));

  

我使用.toFixed(2)方法放置两个小数位,但返回为String。

是的,但是实际上您尝试显示的任何数字在某些时候都是某种字符串(请考虑一下console.log(100.00))。 100和100.00的内部值(numeric)相同。

的区别在于它们的 string 表示形式,因此,寻求一种做到“没有字符串”的方法是矛盾的。

答案 2 :(得分:0)

{{1}}