1

私は非常に基本的なhtml電卓を書いて​​います。最終結果とユーザー入力は、以下の「textDisplay_」領域に表示されます。

<div id ="textDisplayRow_"> 
   <div id = "textDisplay_" class = "calcTextDisplay">0.0</div>
</div>

これらの関数を使用して、表示された値を取得してフロートに解析する JavaScript コードもあります。

function getCurrentText() {
    "use strict";
    return document.getElementById("textDisplay_").innerHTML;
}

function getDisplayedNum() {
    "use strict";
    if (getCurrentText() === emptyMesg) {
        return maxSafeInt;
    }

    var t = 1*getCurrentText();
    //var t = parseFloat(getCurrentText(), 10); 

    if ((isNaN(t)) || (t === undefined)) {
        return 0;
    } else {
        return t;
    }
}

このコードは、デスクトップ ブラウザーで美しく動作します (Chrome、FireFox、および IE でテストしました)。それらはすべて適切に表示され、3.14*2 と入力して「=」を押すと、6.28 が返されます。

ただし、私のAndroid 4では、最新バージョンのモバイルクロムとFirefoxを使用すると、すべての10進数が切り捨てられます! なので「3.14*2=」を打ち込むと「6」になります!

この問題を解決するにはどうすればよいですか? parseFloat が機能しないことを含む他の投稿を見てきましたが、この問題に似たものはありません。また、両方とも同様の結果が得られます。

1*getCurrentText();

parseFloat(getCurrentText(), 10); 

1 つのオプションは、独自の parseFloat を作成することです (私は以前にマイクロ コントローラーに対してこれを実行しました!)。

よろしくお願いします。

4

2 に答える 2

1

あなたの問題は、あなたが思っているようなものではないと確信しています。デスクトップおよびモバイル ブラウザでこのページにアクセスしてください。私にとって、それらは同じ結果を生み出します。

https://jsfiddle.net/xpkhqdLa/1/

浮動小数点数strを保持する文字列であるため、以下のすべてが同じ適切な浮動小数点値を生成します。

var values = [ str*1, 1*str, 1.0*str, parseFloat(str) ];
于 2016-04-06T17:26:28.310 に答える