首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在javascript中将大的负数科学记数法转换为十进制记数串?

如何在javascript中将大的负数科学记数法转换为十进制记数串?
EN

Stack Overflow用户
提问于 2013-04-22 12:27:17
回答 3查看 7.4K关注 0票数 7

converter_scientific_notation_to_decimal_notation('1.34E-15')或converter_scientific_notation_to_decimal_notation(1.34E-15)

=> '0.00000000000000134‘

converter_scientific_notation_to_decimal_notation('2.54E-20')或converter_scientific_notation_to_decimal_notation(2.54E-20)

=>‘0.00000000000000000000254’

Javascript中有这样的函数吗?

parseFloat不适用于较大的负科学数。

代码语言:javascript
复制
parseFloat('1.34E-5') => 0.0000134
parseFloat('1.34E-15') => 1.34e-15
EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2013-04-22 13:12:57

这适用于任何具有指数'E‘(正或负)的正负。(您可以通过前缀'+‘将数字字符串转换为数字,或使其成为字符串方法,或任何对象的方法,并调用该字符串或数字。)

代码语言:javascript
复制
Number.prototype.noExponents= function(){
    var data= String(this).split(/[eE]/);
    if(data.length== 1) return data[0]; 

    var  z= '', sign= this<0? '-':'',
    str= data[0].replace('.', ''),
    mag= Number(data[1])+ 1;

    if(mag<0){
        z= sign + '0.';
        while(mag++) z += '0';
        return z + str.replace(/^\-/,'');
    }
    mag -= str.length;  
    while(mag--) z += '0';
    return str + z;
}

var n=2.54E-20;
n.noExponents();

返回值:

代码语言:javascript
复制
"0.0000000000000000000254"
票数 16
EN

Stack Overflow用户

发布于 2013-04-22 12:36:23

您可以使用toFixed:(1.34E-15).toFixed(18)返回0.000000000000001340

票数 3
EN

Stack Overflow用户

发布于 2018-08-08 06:47:09

您可以使用from-exponential模块。它是轻量级的并且经过了充分的测试。

它接受字符串和数字,因此在转换过程中不会丢失精度。

代码语言:javascript
复制
import fromExponential from 'from-exponential';

fromExponential('1.12345678901234567890e-10'); 
// '0.00000000011234567890123456789'
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/16139452

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档