繁体   English   中英

parseFloat 不适用于移动设备

[英]parseFloat does not work on mobile devices

我正在编写一个非常基本的 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 上,使用最新版本的移动 chrome 和 firefox,所有十进制数字都会四舍五入! 所以如果我输入“3.14*2=”,我会得到“6”!

我该如何解决这个问题? 我查看了其他包含 parseFloat 的帖子不起作用,但没有一个与此问题类似。 两者都给出了相似的结果:

1*getCurrentText();

parseFloat(getCurrentText(), 10); 

一种选择是编写我自己的 parseFloat(我以前为微控制器做过这个!)但我真的不想那样做。

非常感谢。

我很确定你的问题不是你认为的那样。 请在您的桌面和移动浏览器上访问此页面。 对我来说,它们产生相同的结果。

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

str是一个包含浮点数的字符串,下面所有的都产生相同的、正确的浮点值:

var values = [ str*1, 1*str, 1.0*str, parseFloat(str) ];

你可以试试:

var t = 1.0 * getCurrentText();

得到一个浮动。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM