2011-02-01 2 views
9

文字列から不要な文字(通貨記号として定義)を削除し、その値を数値として返す関数があります。値を返すとき、私は次の呼び出し作っています:parseFloat()が10進数の0から右側に移動しないようにするには

return parseFloat(x);

を私が持っている問題は、「0.00」を行う際に、x ==ということです私は戻って0.00(小数点第2位を持つfloat)を得ることを期待。私が代わりに取得することは、単に0

私はまた、次の試したです:

return parseFloat(x).toFixed(2);

、まだ単に0を取り戻します。何か不足していますか?どんな助けでも大歓迎です。

ありがとうございました!

答えて

4

は簡単:OPは、彼はそれを試してみました、それは動作しませんでした

function decimalPlaces(float,length) { 
    ret = ""; 
    str = float.toString(); 
    array = str.split("."); 
    if(array.length==2) { 
    ret += array[0] + "."; 
    for(i=0;i<length;i++) { 
     if(i>=array[1].length) ret += '0'; 
     else ret+= array[1][i]; 
    } 
    } 
    else if(array.length == 1) { 
    ret += array[0] + "."; 
    for(i=0;i<length;i++) { 
     ret += '0' 
    } 
    } 

    return ret; 
} 

document.write(decimalPlaces(3.123,6)); 
+0

私はあなたのために3.00 == 3と思うので数字ではなく小数点以下2桁の数字を印刷したい –

+0

2.009は2.01でなければならない – Mahi

10

これは動作するはずです:

return parseFloat(x).toFixed(2); 

をあなたは放火犯でこれを実行することによってそれをテストすることができます。

var x = '0.00'; 
alert(parseFloat(x).toFixed(2)); 
+0

を言いませんでしたか? –

+0

@Ted Hopp - OPの状態にかかわらず、私はIE 8、Safari、Firebug、Chrome JS Consoleで試してみましたが、ビクターには+1しています。テストすることができます。 – jball

+0

@jball - 私は同意します...それはうまくいくはずですが、そうではありません。私は誰かが前に同様の行動を見ていたことを期待していたし、なぜそうでないかもしれないかについて私に頭をアップすることができた。 – user599144

7

parseFloatは()は、浮動小数点数に文字列をオンにします。これは10進表現ではなく2進値であるため、小数点の右側にある0の数の概念は適用されません。それはどのように文字列にフォーマットされるかによって異なります。 toFixedに関しては、私は数に浮動小数点数を変換することをお勧めしたい:

new Number(parseFloat(x)).toFixed(2); 
+0

x = '2.00'または' '2.00''の場合でも、文字列表現は '' 2.00''となります。 –

+0

@ConAntonakos - そうです、それがポイントです。浮動小数点値では、値の文字列表現でのみ「末尾のゼロ」を持つことはできません。 –

+0

私は実現していますが、浮動小数点数を文字列にする必要なく浮動小数点を保持できることを期待していました。 :( –

関連する問題