【问题标题】:How to round fractional value in JavaScript properly [closed]如何在 JavaScript 中正确舍入小数值 [关闭]
【发布时间】:2014-01-13 08:25:07
【问题描述】:

如果我们有以下值,如何在 java 脚本中对阶乘值进行舍入

7.156945704626378 e +118

我只想要 7.16 如果我们有任何解决方案,请告诉我?

【问题讨论】:

  • 如果排除指数值,表示值可能会改变
  • 你想要7.16,还是7.16e+118
  • 7.156945704626378e118 = 715694570462637800000000000000...000.00。 “我想要 7.16”到底是什么意思?

标签: javascript


【解决方案1】:
var number=7.1569;
number*=100;
var new_number = Math.round(number);
new_number/=100;

【讨论】:

    【解决方案2】:

    【讨论】:

    • 7.156945704626378e+118 已经是数字了,为什么还要显式地转换成数字呢?如果你这样做,你必须使用Number()
    • 实际上它是一个科学数字.. 要将其转换为实际数字,我们需要在这里使用number
    • 还是Number,大写N,不觉得这样行吗?
    【解决方案3】:

    把它放在一个字符串变量中:

    var x = "7.156945704626378e+118";
    

    然后使用正则表达式检查 e 之前的部分并将其解析回浮点数:

    var y = parseFloat(x.match(/\d+[.][0-9]+/)[0]);
    

    四舍五入到小数点后两位:

    var z = y.toFixed(2);
    

    如果您仍然想要您的 e118,只需将 z 与 1e118 相乘即可。

    Here is a working fiddle

    【讨论】:

      【解决方案4】:

      我不确定这种方法是否正确,但这给出了用户想要的问题。

      Number((+num.toString().replace(/e.*/, '')).toFixed(2))
      

      演示

      var num = 7.156945704626378e+118;
      console.log(Number((+num.toString().replace(/e.*/, '')).toFixed(2)));
      
      # 7.16
      

      注意: 这假设指数不重要且mantissa四舍五入所需的全部内容

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2023-03-19
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多