从字符串到浮点数的奇怪转换
Weird conversion from String to float
我有一个带有javascript接口的webview。
在这个Web视图中,我执行某些JavaScript操作。
在其中之一中,我为我的网络内容中的一个元素设置了一个 onclick 属性。(使用jquery)
button.attr("onclick", "Android.doStuff(".concat(stringContainingOnlyNumbers).concat(")"));
正如您可能猜到的那样,变量 stringContainingOnlyNumbers 包含一个仅包含数字的字符串。
Android是我的javascript界面的关键字。
如果我单击按钮,作了在界面上调用的方法doStuff。
到目前为止一切都很好。
但是字符串参数持有看起来像一个浮点值。
那么在js端看起来像这样:
1344810353
在我的界面上出现如下:
1.34447e+09
谁能在这里帮助我并解释为什么会发生这种转换?
这不是真正的转换,它只是使用科学记数法将其重写为更少的十进制数字。
四舍五入到 6 位数字的1344810353是 1.34447e+09,顺便说一句,这是 1.34447 * 10^9。
它是一个浮点数,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);
});
那里发生的事情不是转换为浮点数,但你得到了该整数的科学记数法。它一定发生在康卡特中。你不能做这样的事情吗:
button.attr("onclick", "Android.doStuff(" + stringContainingOnlyNumbers + ")");
?
相关文章:
- 将浮点数排序为自然数
- 从字符串到浮点数的奇怪转换
- 如何在Javascript中将浮点数转换为字符串数组
- 如何在javascript中将分数转换为浮点数
- 将数字 10 转换为 0.10 浮点数
- 将浮点数转换为 RGB 或十六进制
- 在 javascript 中将浮点数转换为近似分数
- 将十进制数转换为浮点数并将其截断
- 将字符串转换为浮点数,最多 2 位小数
- 如何将浮点数转换为字节数组
- 如何在C#中将浮点数转换为Base36,方法与JavaScript's.toString(36)做到了
- 将字符串数组转换为浮点数,然后查找转换后数组的平均值
- 为什么JavaScript坚持将浮点数转换为整数
- 如何在JavaScript中转换为半浮点数
- 将字符串转换为浮点数/数字用于javascript中的数值操作
- AngularJS将字符串数组转换为浮点数组
- 如何将浮点数转换为JavaScript中的4byte十六进制字符串并返回
- 隐式转换-在Javascript中将字符串转换为负浮点数
- 在 js 中将字符串转换为浮点数
- 如何在Javascript中将一个带逗号的数字转换为浮点数