parseInt()
しばらくの間、さまざまなコンテキストでandを使用してきましたがparseFloat()
、この 2 つの内外をすべて知っていると思います。しかし最近、私はこれまでのところ明確に証明できていない奇妙な考えを持っていました.
次の関数を検討してください。
function testProof(strInteger) {
assert(strInteger === '' + parseInt(strInteger, 10));
assert(parseInt(strInteger, 10) === parseFloat(strInteger));
}
// Sample calls...
testProof("5");
testProof("109");
testProof("-55");
まずassert
、入力を整数に変換してから文字列に戻すと、元の文字列が再び生成されます。これにより、 return のケースが防止され、変換によって切り捨てられる小数部分がないことも確認されます。入力が実際に整数の整数文字列であることを確認したいのですparseInt("100bucks")
。100
それが成功した場合、それは と同じ値assert
を返します。parseInt(..., 10)
parseFloat(...)
assert
最初の方法が失敗する理由は多数あります。
- 入力が整数ではありません (
"1.5"
) - 入力の先頭にゼロがあります (
"0050"
) - 入力の末尾にガベージがあります (
"100bucks"
) - 入力が指数表記 (
"1e3"
) であるか、大きすぎて指数になる - 入力が解析できないため、
NaN
- 多分他の人?
しかし、ここで質問assert
がありますassert
。別の言い方をすれば、入力が文字列内の整数であることが事前にわかっている場合、?parseFloat(...)
のドロップイン置換として機能できます。parseInt(..., 10)
(良い代替品とは言えません... :-P)