我有一个带有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
有人可以帮我解决这个转换的原因吗?
答案 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 + ")");