简体   繁体   中英

Is there a way to truncate scientific notation numbers in Javascript?

As you all know since it is one of the most asked topic on SO, I am having problems with rounding errors (it isn't actually errors, I am well aware). Instead of explaining my point, I'll give an example of what possible numbers I have and which input I want to be able to obtain:

Let's say

var a = 15 * 1e-9;
alert(a)

outputs

1.5000000000000002e-8

I want to be able to obtain 1.5e-8 instead, but I cannot just multiply by 10e8, round and divide by 10e8 because I don't know if it will be e-8 or e-45 or anything else.

So basically I want to be able to obtain the 1.5000002 part, apply toFixed(3) and put back the exponent part.

I could convert into a string and parse but it just doesn't seem right...

Any idea?


(I apologize in advance if you feel this is one of many duplicates, but I could not find a similar question, only related ones)

Gael

You can use the toPrecision method:

var a = 15 * 1e-9;
a.toPrecision(2); // "1.5e-8"

如果您正在进行科学工作并需要考虑重要数字: 四舍五入到任意数字的有效数字

var a = 15 * 1e-9;

console.log(Number.parseFloat(a).toExponential(2));

//the above formula will display the result in the console as: "1.50e-8"

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM