limit the decimal place in javascript is not working for 4.45678765e-6

前端 未结 5 784
执念已碎
执念已碎 2021-01-27 04:39

every time i use the Math.round(4.45678765e-6 * 10000)/10000 it gives me a 0 value but if i remove the e-6 it gives the correct answer 4.4567 what shoul i do? here\'s my code. t

相关标签:
5条回答
  • 2021-01-27 04:49

    Not 100% sure what your after but if you want the power;

       var f = 4.45678765e-6;
       var exp = Math.floor(Math.log(Math.abs(f)) / Math.LN10);
       // -6
       var f2 = f * Math.pow(10, -exp);
       // 4.45678765
    
    0 讨论(0)
  • 2021-01-27 04:54

    4.45678765e-6 is 0.00000445678765, that number with only five digits after decimal point is 0.00000 so JavaScript is giving you the correct result.

    0 讨论(0)
  • 2021-01-27 04:54

    You can use -

    var x = Number((4.45678765 * 10000)/10000).toFixed(5);
    

    The toFixed( <digit> ) will restrict your value to those digits after decimal point.

    0 讨论(0)
  • 2021-01-27 04:55

    try .toPrecision(5) instead. IE: (4.45678765).toPrecision(5)

    0 讨论(0)
  • 2021-01-27 05:04

    use 'numObj.toExponential([fractionDigits])'

    your case is its raison d'être, and this overlooked gem seems to be a javascript method rarely given its due!

    Quote from MDN:

    Returns a string representing a Number object in exponential notation with one digit before the decimal point, rounded to fractionDigits digits after the decimal point

    More simply put, it limits the number of decimal places to show in exponential notation.

    var x = 4.45678765e-6.toExponential(5) //returns 4.45679e-6
    var x = 4.45678765e-6.toExponential(2) //returns 4.46e-6
    

    See examples of more rounding with exponential notation here: https://stackoverflow.com/a/36532545/5440638

    0 讨论(0)
提交回复
热议问题