【问题标题】:Is it possible to return a float value with 2 decimal places for 0?是否可以为 0 返回一个小数点后 2 位的浮点值?
【发布时间】:2019-03-16 16:50:04
【问题描述】:

我正在努力将其输入 Google Analytics(分析)以及将价格作为浮动返回的准则之一,到目前为止一切都很好。我使用 parseFloat() 解决了,但是,对于以 00 结尾的值,我必须返回两位小数。示例:(100.00 或 208.00)。当它返回一个浮点值时,它会删除以 0 结尾的值。

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

float= 100 的结果

我使用 .toFixed(2) 方法来放置两位小数,但返回为字符串。

嗯,我已经在几个地方进行了研究,我发现的所有解决方案以及我知道的解决方案都会返回一个字符串。我相信从技术上讲这是不可能的。但我想确保这真的不可能。

Saberiam me dizer se é possivel retornar um valor com duas casas decimais para valores de final .00。

为了澄清 parseFloat 返回一个带有浮点点的值,如 100.99,现在为 100.00 不是。

很抱歉之前用葡萄牙语写了这个问题。

谢谢

【问题讨论】:

  • 不要关闭我的话题。我为你翻译昆汀。
  • @Veverke 我现在重写。
  • 是否有可能知道为什么“字符串”部分对您不满意?这看起来像 x/y problem
  • 您研究并发现这是不可能的。猜猜这是不可能的。 JavaScript 没有带数字的有效数字。如果你需要它们,它必须是一个字符串。

标签: javascript floating-point frontend floating-accuracy


【解决方案1】:

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

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

【讨论】:

    【解决方案2】:

    你混合了两件事:一个数字的值,以及它的显示方式。

    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

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

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

    我使用 .toFixed(2) 方法来放置两位小数,但返回为字符串。

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

    唯一的区别在于它们的字符串表示,因此要求一种“无字符串”的方法是矛盾的。

    【讨论】:

      【解决方案3】:
          <!DOCTYPE html>
          <html>
          <title>Web Page Design</title>
          <head>
          <script>
          function sayHello() {
              var num = "100.00";
              var value=parseFloat(num);
              var n = value.toFixed(2);
              alert(n);
      
          }
          sayHello();
          </script>
          </head>
          <body>
          </body>
          </html>
      

      【讨论】:

        猜你喜欢
        • 2011-11-18
        • 1970-01-01
        • 2011-11-09
        • 1970-01-01
        • 2021-11-30
        • 2011-09-15
        • 2011-03-10
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多