【问题标题】:Round a number to 2 decimal places JS将数字四舍五入到小数点后 2 位 JS
【发布时间】:2020-06-12 01:23:13
【问题描述】:

我有

oninput="
    price_<?php echo esc_attr( $range_slider_id ); ?>.value=parseFloat(<?php echo esc_attr( $range_price_id ); ?>)*parseFloat(<?php echo esc_attr( $range_slider_id ); ?>.value); "

如何将 price_~.value 舍入到小数点后两位?

我有输出:

<output id="price_range_5e5851cd67084" for="range_5e5851cd67084">43.199999999999996</output>

我尝试添加 .toFixed(2) 和 .round(2) .. 但它没有帮助...

【问题讨论】:

  • Math.round 舍入到最接近的整数,忽略第二个或其他参数。 number.toFixed 返回一个字符串。请发布有效的 javascript(例如 PHP 生成的内容)或标记为 PHP。还采样输入、预期输出和实际输出。
  • 更糟糕的情况,无论使用哪种语言,您始终可以使用带有 (round(x*100))/100... 之类的标准轮次,如果轮次没有额外转换为 int去做吧。

标签: javascript php jquery wordpress woocommerce


【解决方案1】:

使用toFixed(2)

比如

oninput="
    price_<?php echo esc_attr( $range_slider_id ); ?>.value=parseFloat(<?php echo esc_attr( $range_price_id ).toFixed(2); ?>)*parseFloat(<?php echo esc_attr( $range_slider_id ); ?>.value).toFixed(2); "

【讨论】:

    【解决方案2】:

    从这个话题Why can't I use toFixed on an HTML input object's value?找到解决方案@最终结果:

    price_<?php echo esc_attr( $range_slider_id ); ?>.value=Number(<?php echo esc_attr( $range_price_id ); ?>)*Number(<?php echo esc_attr( $range_slider_id ); ?>.value); price_<?php echo esc_attr( $range_slider_id ); ?>.value=Number(price_<?php echo esc_attr( $range_slider_id ); ?>.value).toFixed(2);
    

    【讨论】:

      【解决方案3】:

      如果只是显示可以使用的数字:

      number.toLocaleString('en', {minimumFractionDigits: 2, maximumFractionDigits: 2})
      

      您也可以将“en”替换为您喜欢的语言环境 https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Locale

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2015-11-24
        • 1970-01-01
        • 1970-01-01
        • 2012-01-03
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多