【问题标题】:Why does JavaScript insist on converting floats to integers?为什么 JavaScript 坚持将浮点数转换为整数?
【发布时间】:2013-05-22 13:53:15
【问题描述】:

我注意到如果我使用 JavaScript:

var dict = { "foo" : 1.0 };

当检索dict 时,我会得到:

{ foo : 1 }

这背后的原理是什么?避免它的首选方法是什么(我目前将1.0 转换为字符串)?

【问题讨论】:

标签: javascript casting floating-point integer implicit-conversion


【解决方案1】:

JavaScript 不会将浮点数转换为整数。您看到的是某些诊断工具的行为,无论您使用什么来查看该变量的值。 JavaScript 数字始终是双精度浮点数,除了在一些按位运算的中间(这是一种瞬态条件)。

因为所有数字都是浮点数,所以在将变量初始化为没有小数部分的值时,不必使用显式小数。也就是说,11.0 在 JavaScript 程序中是完全相同的值。

【讨论】:

  • 我实际上在 Java 应用程序中使用 JS 对象的 JSON 表示,如果您没有按预期读取浮点数,您可能会遇到一些问题。所以我想这没什么可做的吧?
  • @adrianp(我不是 Java 大师,但是)如果您提供整数,它不会自动转换为浮点数吗?例如,double d = 1; 有效,但不是相反:int i = 1.2;
  • @adrianp JSON 是它自己的语法和自己的规则。如何将 JSON 数字转换为 Java 数据结构取决于您的 Java JSON 解析器想要做什么,而这与 JavaScript 没有任何关系。当在 JavaScript 端解析 JSON 对象时,1 将产生与 1.0 相同的值。
  • @Ian 是的,这是真的;我不是很清楚,我的问题是当我做json.getFloat()
猜你喜欢
  • 2020-05-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多