【问题标题】:How to check if a number has two decimal places and keep the trailing zero if necessary?如何检查一个数字是否有两位小数并在必要时保留尾随零?
【发布时间】:2013-10-04 23:54:58
【问题描述】:

如果你有这些数字:

  • 2

  • 2.05

  • 2.547

  • 2.5

如何检查数字是否有两位小数?

如果它有 2 个小数,如何去掉第二个小数(四舍五入)但如果需要保留尾随的 0?

结果示例:

2.05 would end in 2.1
2.04 would end in 2.0
2.54 would end in 2.5

我知道您可以使用 toFixed(1),但这会将其转换为字符串。如果使用 parseInt() 将其转换为 int,它会丢失尾随的零

谢谢大家

【问题讨论】:

  • 1.第2轮。根据需要格式化
  • 使用.toFixed,它将浮点数四舍五入到指定的小数位数。
  • 它必须是一个字符串,你不能有一个保持尾随 0 的浮点数,因为尾随 0 在浮点数中的意义较小,这就是为什么它们总是被丢弃。
  • 你为什么要使用 parseInt,你应该使用 parseFloat。 parseInt 将字符串解析为整数,整数没有小数部分。即使那样2.0 仍会被解析为2

标签: javascript jquery


【解决方案1】:

但是 toFixed 把它变成一个字符串,如果你使用 parseInt 它会去掉尾随的零

你可以有一个数字,也可以有一个数字的表示,但没有第三种选择。

如果你想要一个数字的表示,那么字符串有什么问题?如果你想要一个数字,那么就没有“尾随零”。

由“2.0”表示的数字没有尾随零,因为只有表示可以有尾随零。数字 2 可以用或不用尾随零来表示,并且它是相同的数字。

那么:你想要一个数字还是一个表示?

我认为你一定想要一个表示,因为实际上只有表示可以有一些特定的小数位数。在这种情况下,为什么toString 不是正确的解决方案?

【讨论】:

    【解决方案2】:

    假设x 是您正在处理的值

    var temp = Math.round(x * 10) / 10;   // This is the value as a number
    document.write(temp.toFixed(1));      // writes the number in the desired format
    

    在 JavaScript 中,值 1.5 和值 1.50 之间没有区别 - 作为数字,它们完全相同。只有当您将它们转换为字符串时,使用 toFixed() 之类的东西,它们才会变得不同。

    【讨论】:

      【解决方案3】:

      我建议(这是基于的 HTML):

      $('li').text(function(i,t){
          var rounded = t.split('.')[1] ? (Math.round(parseFloat(t) * 10)/10).toFixed(1) : t;
          return t + ' (' + rounded + ')';
      });
      

      JS Fiddle demo.

      三元:

      t.split('.')[1] ? (Math.round(parseFloat(t) * 10)/10).toFixed(1) : t;
      

      评估是否有句点,如果有,那么我们将浮点数解析为一个数字,将其乘以 10(因为我们希望该数字保留一位小数),将该数字四舍五入,然后将其除以 10,然后用 @ 987654324@ 将数字截断到一位(正确舍入)小数位。

      如果数字没有小数部分(它是整数,而不是浮点数),我们将不做任何处理,只需使用找到的现有数字。

      这基于以下 HTML:

      <ul>
          <li>2</li>
          <li>2.05</li>
          <li>2.547</li>
          <li>2.5</li>
          <li>2.04</li>
      </ul>
      

      【讨论】:

        猜你喜欢
        • 2021-09-13
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2019-08-18
        • 1970-01-01
        • 2021-06-05
        • 1970-01-01
        相关资源
        最近更新 更多