【问题标题】:JavaScript: parseFloat() strips trailing zerosJavaScript:parseFloat() 去除尾随零
【发布时间】:2021-10-15 20:02:48
【问题描述】:

我一直在努力寻找解决以下问题的方法。我有一个浮点数的字符串,例如,

 var value = '12.30';

当我尝试将其转换为浮点数时

parseFloat('12.30'); // output is 12.3

我需要一种方法让我的逻辑返回 12.30、实际值以及一个数字。

我检查过的解决方案,

parseFloat('12.30').toFixed(2);

但这会将其转换为字符串类型,这在我的场景中是不可接受的。

任何帮助将不胜感激。谢谢!

【问题讨论】:

  • 12.3 与 12.30 的值完全相同
  • 数字上12.312.30,它们是相同的值。除非需要在某处打印,否则尾随零是没有意义的
  • 您认为使用字符串显示尾随零不起作用的情况是什么?
  • 12.3 是存储为 1 和 0 的数值。它存储的格式不关心十进制零的尾随程度,因为它们无关紧要。它不关心十进制字符串的样子。为什么你需要这个数字格式的尾随 0 呢?数学不在乎。
  • 在实际的内部表示(二进制浮点)中,尾随的十进制零根本不表示;这真的没有意义。唯一重要的是用于演示,这可能涉及格式化为字符串的数字。

标签: javascript floating-point precision


【解决方案1】:

这不是parseFloat() 的错。从数值上讲,12.30 等于 12.3,即使你不使用 parseFloat()

const x = 12.30;
console.log(x); // Prints "12.3"

【讨论】:

    【解决方案2】:

    您可以在 JavaScript 中使用来自 Type Conversions 的一元加号来获取数值

    var value = '12.30';
    alert(parseFloat(value).toFixed(2));         // 12.30
    alert(typeof +parseFloat(value).toFixed(2)); // number
    

    在开发中获得新的成功!

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-11-01
      • 2014-09-02
      • 2020-02-06
      • 1970-01-01
      • 2021-12-04
      • 2011-05-30
      • 2012-01-26
      • 1970-01-01
      相关资源
      最近更新 更多