Javascript parseFloat在移动设备上不起作用

Javascript parseFloat在移动设备上不起作用,javascript,mobile-chrome,Javascript,Mobile Chrome,我正在写一个非常基本的html计算器。最终结果和用户输入显示在下面的“文本显示”区域中: <div id ="textDisplayRow_"> <div id = "textDisplay_" class = "calcTextDisplay">0.0</div> </div> 这段代码在桌面浏览器上运行得很好(我在Chrome、FireFox和IE上测试过),它们看起来都不错,如果我输入: 3.14*2然后按“=”他们给我6.28分

我正在写一个非常基本的html计算器。最终结果和用户输入显示在下面的“文本显示”区域中:

<div id ="textDisplayRow_"> 
   <div id = "textDisplay_" class = "calcTextDisplay">0.0</div>
</div>
这段代码在桌面浏览器上运行得很好(我在Chrome、FireFox和IE上测试过),它们看起来都不错,如果我输入: 3.14*2然后按“=”他们给我6.28分

然而,在我的android 4上,使用最新版本的移动chrome和firefox,所有十进制数字都会向下舍入!因此,如果我输入“3.14*2=”,我将得到“6”

如何解决此问题?我看过其他包含parseFloat的帖子,它们都不起作用,没有一个类似于这个问题。 这两种方法也给出了类似的结果:

1*getCurrentText();

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

提前非常感谢。

您可以尝试:

var t = 1.0 * getCurrentText();

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

str
是一个包含浮点数的字符串时,以下所有操作都会生成相同的正确浮点数:

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

我在浏览所有“parseFloat”无效问题时学会了1*诀窍。不幸的是,我认为这正是移动浏览器上的方式,你能在没有小数点的情况下快速尝试吗?这样行吗?这就是全部代码吗?将包含数学表达式的字符串缩减为值的一种常见方法是
eval(“3.14*2”)
。所有
parseFloat()
都需要将包含数字的字符串转换为数字,而不是表达式。它可以返回一个数字并忽略后续的非数字字符。看你有没有检查过没有“严格使用”;?请注意,与
parseInt()不同,
不接受基数作为第二个参数。(换句话说,你的
,10
,是不需要的,什么也不做。)谢谢,我会尝试一下,让你知道。我对这个答案投了反对票,因为在JavaScript中整数和浮点数没有区别。它们都是
number
值。虽然OP已经接受了这个答案,但我认为这是不可能解决问题的,因为
parseFloat(getCurrentText())
1*getCurrentText()
将失败。这是一个骗局。抱歉,@PoulBakWel,这显然是某种bug,bug不遵守规则!谢谢你的评论。我会调查的。他们也会给我同样的结果!但我所做的唯一更改是将“.0”添加到1*中,并为移动浏览器修复了它。我甚至把更多的代码放在上面,看看是否有其他部分(比如说精度不高的函数)是罪魁祸首,但不是!JSFIDLE在台式机和移动设备上都可以正常工作。请看:顺便说一句,我只是在学习JS,非常感谢你把我介绍给JSFIDLE!它确实有助于解决这个问题,但它确实是一个很酷的玩具。我建议您创建一个可复制的测试用例(在您自己的页面上,或者在JSFiddle.net上),将其缩减到复制问题所需的绝对最小代码。从显示问题的HTML+JS开始。然后删除代码和HTML。用内联代码替换函数调用。去掉无关的代码。删除边缘案例的测试和处理。只要问题再次出现,就继续减少它。最终问题将不会重现,你将不得不思考为什么你刚才所做的改变会修复它。你会有一个“啊哈!”的时刻,告诉你问题出在哪里。
var values = [ str*1, 1*str, 1.0*str, parseFloat(str) ];