奇怪的从String转换为float

时间:2012-08-16 14:52:15

标签: java javascript android jquery string

我有一个带有javascript界面​​的webview。

从这个webview中我做了一些javascript操作。

在其中一个中,我为webcontent中的一个元素设置了onclick属性。 (使用jquery)

button.attr("onclick", "Android.doStuff(".concat(stringContainingOnlyNumbers).concat(")"));

正如您可能猜到的,变量stringContainingOnlyNumbers包含仅包含数字的String。

Android是我的javascript界面​​的关键字。

如果我点击我操作的按钮,doStuff就会在界面上调用。

到目前为止一切都很好。

但字符串参数保持看起来像浮点值。

所以在js方面看起来像这样:

1344810353

出现在我的界面上:

1.34447e+09

有人可以帮我解决这个转换的原因吗?

2 个答案:

答案 0 :(得分:3)

这不是真正的转换,它只是使用科学记数法将其重写为更少的十进制数字。
1344810353四舍五入为6位数是1.34447e + 09,其顺便提一下是1.34447 * 10 ^ 9.(
) 它是一个浮点数,当javascript连接为字符串时,javascript往往会缩短数字 这是一个例子:http://jsfiddle.net/YGC8B/

你可以通过迭代数字并逐个显示来解决这个问题。

function getString(number) {
    var numstring = "";
    var num = number;
    while (num > 0) {
        numstring = num % 10 + numstring;
        num -= num % 10;
        num /= 10;
    }
    return numstring;
}
var number = 1344810353;
log(getString(number)); // or however your output it

这是一个有效的例子:http://jsfiddle.net/Tj5Zy/


附注:

最好不要使用元素的 onclick 属性,它稍微弃用了。我建议附上活动 而且,既然您正在使用jQuery,那就更容易了。

button.bind('click',function() {
    Android.doStuff(stringContainingOnlyNumbers);
});

答案 1 :(得分:1)

正在发生的事情是没有转换为浮点数,但是您正在获得该整数的科学记数法。它必须在concat中发生。 你不能做这样的事情:

button.attr("onclick", "Android.doStuff(" + stringContainingOnlyNumbers + ")");