如何将包含科学符号的字符串转换为正确的Javascript数字格式
我有一个字符串如何将包含科学符号的字符串转换为正确的Javascript数字格式,javascript,string,numbers,format,Javascript,String,Numbers,Format,我有一个字符串,例如:“4.874915326E7”。将其转换为javascript数字格式的最佳方式是什么?(整数还是浮点)?如果我尝试parseInt(),则会忽略末尾的E。编辑: 这个答案似乎引起了一些混乱。最初的问题是如何将字符串形式的科学符号转换为数字(以便用于计算)。然而,找到这个答案的人中有相当一部分人似乎认为这是关于将一个由javascript表示为科学符号的数字转换成一种更具表现力的格式。如果这实际上是您的目标(演示),那么您应该将数字转换为字符串。请注意,这意味着您将无法在计
,例如:“4.874915326E7”
。将其转换为javascript数字格式的最佳方式是什么?(整数还是浮点)?如果我尝试parseInt(),则会忽略末尾的E。编辑:
这个答案似乎引起了一些混乱。最初的问题是如何将字符串形式的科学符号转换为数字(以便用于计算)。然而,找到这个答案的人中有相当一部分人似乎认为这是关于将一个由javascript表示为科学符号的数字转换成一种更具表现力的格式。如果这实际上是您的目标(演示),那么您应该将数字转换为字符串。请注意,这意味着您将无法在计算中轻松使用它
原始答复:
将其作为字符串传递给Number函数
Number("4.874915326E7") // returns 48749153.26
Number("4E27") // returns 4e+27
将科学记数法中的数字转换为字符串:
这是最好的回答,但从这个问题我个人喜欢。请注意,这个特定的解决方案不适用于负数。为方便起见,以下是一个示例:
(4e+27).toLocaleString('fullwide', {useGrouping:false}) // returns "4000000000000000000000000000"
试试这样的
您还可以在字符串前面使用
+
符号来获取数字
+"4.874915326E7" // == 48749153.26
我有一个这样的值
3.53048874968162e-09
,并使用Number.toFixed(20)
为我工作:
value = new Number('3.53048874968162e-09')
//[Number: 3.53048874968162e-9]
value.toFixed(20)
//'0.00000000353048874968'
序言 虽然其他答案足够且正确,但为了能够正确解析字符串中的数字,了解类型强制(在您的情况下是转换)是如何工作的(至少在高级别上是这样)是很有用的 强制规则 有一些规则定义在调用实用程序时如何执行转换,如
parseInt
、parseFloat
、Number
构造函数或+
一元运算符:
parseInt(,[radix])
函数:
- 忽略前导空格(
->“24”
)24
- 空字符串返回
NaN
- 第一个非数字字符完成解析(
->“42answer”
)42
- 根据上述规则,小数位也可以完成解析
ExponentPart
由中定义的ExponentIndicator
和SignedInteger
组成)-一旦遇到e
字符,解析就会停止,函数返回到目前为止解析的数字。事实上,它会在第一次遇到小数点时停止(请参见最后一条规则)
parseFloat()
与parseInt
相同,除了:
- 它解析第一个小数点
- 忽略前导的
(因此无法解析十六进制)0
parseFloat
为“浮点”时,应使用parseInt
(注意,它们实际上是相同的类型)
Number()
构造函数和一元数+
:
- 对于布尔值->
到true
,1
到false
0
- 对于
->null
(因为0
是错误的)null
- 对于
未定义的
->
NaN
- 对于数字:通过
- 对于字符串:
- 仅数字[0-9]字符,以数字或
或+
->数字(整数)开头-
- 相同,但包含浮点->数字(浮点)
- 包含十六进制->数字(整数)
- 空字符串->
0
- 所有其他情况->
NaN
- 仅数字[0-9]字符,以数字或
- 对于对象,将调用它们的
方法。如果结果是valueOf()
,则调用NaN
方法。在引擎盖下,对象将转换为基本体,该基本体将转换为数字toString()
- 对于符号和大整数->
被抛出TypeError
数值的表示形式 “转换”也有严格的含义,如类型转换(请参阅) ECMAScript实现双精度64位格式,这是它唯一的“格式”。该问题询问如何将字符串转换为数字格式,因此答案应提供以下信息: 如何将字符串转换为数字给定值表示一个数字在电子符号 参考资料
使用MathJs库对我来说效果最好,我尝试了很多这样的答案,但在某些情况下没有一个能正常工作。这很有效。更多 解决方案,添加MathJS,然后按如下方式调用:
<script src="https://cdn.jsdelivr.net/npm/mathjs@8.0.1/lib/browser/math.js" crossorigin="anonymous"></script>
function toPlainString(num) {
return math.format(num, {notation: 'fixed'});
}
函数toPlainString(num){
返回math.format(num,{notation:'fixed'});
}
这通常指的是a(有时称为科学E符号,但不管怎样…)更改了问题标题,thanksMine不起作用<代码>编号(“1.7976931348623157e308”)@它对我有用typeof Number(“1.7976931348623157e308”)
在控制台中运行确切的代码时为我返回“Number”。在控制台中不使用typeof
运行它会返回数字“1.7976931348623157e+308”。@JosephMarikle但我希望我的数字是标准符号,而不是科学符号
<script src="https://cdn.jsdelivr.net/npm/mathjs@8.0.1/lib/browser/math.js" crossorigin="anonymous"></script>
function toPlainString(num) {
return math.format(num, {notation: 'fixed'});
}