2

その前に、ごめんなさいと言いたいです。しかし、これは重複していません。他の投稿に対する回答には同じ問題があります。JS には float または int はありません (数値のみ)。関数を作成isInt()すると、2.00 は常にtrue整数として検出されます。2.00 を float として検出したい。したがって、最初に文字列化する必要があります。

function isInt(i) {
    if ( i.toFixed ) {
        if ( i % 1 === 0 ) {
            return true; // the problem is 2.00 always detected true as integer. 
            // i want 2.00 detected as float
        } else {
            return false;
        }
    } else {
        return false;
    }
}

次に、2.00 を文字列化してから、それを split('.') で分割すると思います。しかし、 toString はそれをしません

var i = 2.00;
alert(i.toString()); 
// Why this always result 2 . i want the character behind point

それで、それを行う方法は?「2」だけでなく、「2.00」という 2.00 の結果が必要です

答えてくれてありがとう

4

5 に答える 5

2

リビジョンへの回答:

JavaScript 内では、とを区別する方法はまったくありません。したがって、追加の小数点以下の桁数が指定されていないことは決してありません.2が割り当てられた後、(メソッドごとに)以外のものであることを検出できます。2 2.02.000var a = 2.00integer

[誤解を招く]組み込みメソッドにもかかわらず、適切なケース:

typeof parseInt('2.00', 10) == typeof parseFloat('2.00')
                   'number' == 'number'
                        /* true */

元の回答:

JavaScript にはハードベースのスカラー型はなく、単純にNumber. その理由と、実際には有効数字が 1 つしかないため、JavaScript は2.00それを「整数」にしています [おおざっぱに使用] (したがって、小数点以下の桁数はありません)。JavaScript へ: 2 = 2.0 = 2.00 = 2.00000)。

適切な例として、私があなたに番号を渡して、12.000000000000それを覚えておいて今から 1 週間後に誰かに渡すように頼んだ場合、あなたは何個のゼロがあったかを覚えるのに時間を費やしますか、それとも私があなたに番号を渡したという事実に焦点を合わせます12か? (twelveより覚えるのにはるかに少ない労力で済みますtwelve with as many decimal places)

intvs //floatに関しては、JavaScript の観点ではなくdoublerealあなたの観点から数値のタイプを記述しているだけです。JavaScript で数値を呼び出すことをint、定義ではなくラベルを付けるものと考えてください。概説する:

Value:     To JavaScript:    To Us:
------     --------------    ------
1          Number            integer
1.00       Number            decimal
1.23       Number            decimal

どのように分類しても、JavaScript はそれをNumber.

小数点以下の桁数を維持する必要がある場合は、Number.toFixed(n)が最善の策です。

例えば:

// only 1 sig-fig
var a = 2.00;
console.log(''+a);             // 2
console.log(a.toFixed(2));     // 2.00

// 3 sig-figs
var b = 2.01
console.log(''+b);            // 2.01
console.log(b.toFixed(2));    // 2.01

ところで、var の前に a を付けるの''+と同じ.toString()です。a.toString()またはを使用した場合、同じ結果が得られますb.toString()

于 2013-08-08T12:50:13.823 に答える
0

「2.00」を文字列として保持し、必要に応じて算術のために数値として解析することをお勧めします。そうすれば、数値 2 が「2」、「2.00」、または「2.000000」として入力されたかどうかを区別できます。元の小数点以下の桁数を保持する場合は、数値ではなく文字列を出力します。

于 2013-08-08T14:11:05.867 に答える
0

やりたいことを正確に行うことはできません。

2.00 は、JavaScript で小数点なしの数値 2 に変換されます。必要に応じて、上記の .toFixed(2) を使用して追加することができます。

于 2013-08-08T12:48:28.540 に答える
0

文字列化するには (少なくとも Chrome はそうします)、次を使用します。

i.toPrecision(3)

これにより、小数点以下 2 桁が表示されます。

また、NULL のソリューションは、正確な精度を計算する必要なく、非常にうまく機能します。つまり.toFixed(decimals)、あなたの親友です

于 2013-08-08T12:46:57.393 に答える