将指数值打印为字符串而不扩展

Posted

技术标签:

【中文标题】将指数值打印为字符串而不扩展【英文标题】:Print exponential value as a string without expanding 【发布时间】:2016-03-07 08:21:13 【问题描述】:
var y = 123e5;
console.log(y); // output: 12300000

上面的代码有一个数字变量y,我得到的输出是12300000。我想把它显示为一个字符串。输出应为“123e5”,值的类型也应为字符串。对此类问题的要求是,我不希望 JS 在我需要之前操纵我的数据,如果确实如此,那么可能还有一种方法可以获取我存储/写入的确切值。

y 的测试值也可以取为1023e51023e+51023e+510230e+5

<!DOCTYPE html>
<html>
<body>

<pre>
<script>
var y = 123e5;
document.writeln(y);
document.writeln(123e5);
document.writeln(123e+5);
document.writeln(123e-5);
document.writeln(1230e-5);
</script>
</pre>

</body>
</html>

我的确切目标是知道是否有任何方法可以在不更改的情况下存储/写入相同的值。那么获取原始值的确切方法是什么。

谢谢!

【问题讨论】:

@MatíasFidemraizer 据我所知,这实际上不是重复的。 【参考方案1】:

我的确切目标是知道是否有任何方法可以获取 相同的值存储/写入没有改变。那么获得的确切方法是什么 我的原始价值。

不,该信息已丢失javascript 中的科学记数法是为了更清楚地表达源代码中的一些困难数字(非常大/小)。如果您打算始终了解如何在其特定符号中定义值,则需要使用字符串或附加一些额外信息来存储它。

但是,这里有一个函数,可以将数字的尾随 0 转换为等效的 eN,该符号如何在 JavaScript 中与数字一起使用。

var convertNumToExpStr = function(number) 
  return String(number).replace(/0+$/, function(all) 
    return 'e' + all.length;
  );
;

document.body.textContent = convertNumToExpStr(123e5);

【讨论】:

@MatíasFidemraizer 抱歉,我不经常在这里发帖,还没有了解它是如何工作的。 如果convertNumToExpStr(123e5+1); 怎么办? @alex 谢谢!你快到了,但是如果我更改值而不是按预期输出...您能否检查一下代码中的值 1023e5 @hallucinations 它不会更改表示的数字,因为没有任何尾随 0 @Rajesh Nah,不要偷懒。 将整个资源放在 SO 中绝对更好,以避免外部资源的停机时间成为未来读者在寻找解决方案时遇到的问题。使用此处的代码 sn-p,您甚至可以就地运行它...

以上是关于将指数值打印为字符串而不扩展的主要内容,如果未能解决你的问题,请参考以下文章

csharp 简单的C#扩展方法,将驼峰大小写字符串转换为下划线表示法而不使用任何正则表达式

将日期(声明为字符)打印为字符串

ES6为数值扩展

如何将无符号字符数组解析为数值数据

ES6浅谈--字符串新方法,正则扩展,数值扩展

ES6数值的扩展