文字列がありe.g: "4.874915326E7"
ます。それをjavascriptの数値形式に変換する最良の方法は何ですか?(intまたはfloat)?parseInt()を試してみると、最後のEは無視されます。
6 に答える
編集:
この答えは混乱を引き起こしているようです。元々の質問は、文字列形式の科学的記数法を数値に変換する方法を尋ねていました(計算に使用できるようにするため)。ただし、この答えを見つけたかなりの数の人々は、JavaScriptによって科学的記数法として表されている数値をより見やすい形式に変換することについて考えているようです。それが実際にあなたの目標(プレゼンテーション)である場合は、代わりに数値を文字列に変換する必要があります。これは、計算で簡単に使用できないことを意味することに注意してください。
元の回答:
それを文字列としてNumber関数に渡します。
Number("4.874915326E7") // returns 48749153.26
Number("4E27") // returns 4e+27
科学的記数法の数値を文字列に変換する:
これは別の質問で最もよく答えられますが、その質問から私は個人的にを使用するソリューションが.toLocaleString()
好きです。特定のソリューションは負の数では機能しないことに注意してください。あなたの便宜のために、ここに例があります:
(4e+27).toLocaleString('fullwide', {useGrouping:false}) // returns "4000000000000000000000000000"
前文
他の答えは十分で正しいですが、文字列から数値を正しく解析できるようにするには、少なくとも高レベルで型強制 (あなたの場合は変換) がどのように機能するかを理解することが役立ちます。
強制ルール
parseInt
、parseFloat
、Number
コンストラクター、+
単項演算子などのユーティリティを呼び出すときに変換がどのように実行されるかを定義するルールがあります。
parseInt(<value>, [radix])
関数:
- 先頭の空白を無視します (
" 24"
->24
) - 空の文字列を返す
NaN
- 最初の非数値文字は解析を終了します (
" 42answer"
->42
) - 上記のルールの下で、小数点以下の桁数も解析を終了します
3 番目のルールは、指数部 (ExponentPart
で構成ExponentIndicator
され、 standardSignedInteger
で定義されている) が無視される理由です。文字が検出されるとすぐに、解析が停止し、関数はそれまでに解析された数値を返します。実際には、小数点が最初に検出されたときに停止します (最後の規則を参照)。e
parseFloat()
は と同じですがparseInt
、次の点が異なります。
- 最初の小数点を解析します
- 先頭を無視し
0
ます (したがって、16 進数は解析できません)
経験則として、parseInt
「integer」と「float」に変換するときに使用する必要がありますparseFloat
(これらは実際には同じ型であることに注意してください)。
Number()
コンストラクターと単項+
:
ブール値の場合 ->
true
to1
、false
to0
For
null
->0
(null
偽なので)のために
undefined
- >NaN
数値の場合: パススルー
文字列の場合:
+
数字の [0-9] 文字のみ、数字またはor-
-> 数字 (整数)で始まる- 同じですが、浮動小数点が含まれています -> 数値 (浮動小数点)
- 16 進数を含む -> 数値 (整数)
- 空文字列 ->
0
- その他すべてのケース ->
NaN
オブジェクトの場合、その
valueOf()
メソッドが呼び出されます。結果がNaN
の場合、toString()
メソッドが呼び出されます。内部では、オブジェクトはプリミティブに変換され、そのプリミティブは数値に変換されます。シンボルと BigInts の場合 ->
TypeError
がスローされます
数値形式に関する注意
質問は依然としてフォーマットに関係する回答とコメントを引き付けているため(受け入れられた回答で有効に述べられているように)、次のように述べる必要があります。
プログラミングに適用されるように、 「数値形式」には厳密な意味があります:
数値の表現「変換」には、型変換としての厳密な意味もあります(標準を参照)
ECMAScript は倍精度の 64 ビット形式を実装しており、これが唯一の "形式" です。この質問は、文字列を数値形式に変換することについて尋ねているため、回答は次の情報を提供することが期待されています。
値が e-notation の数値を表す場合に、文字列を数値に変換する方法
参考文献