【问题标题】:Java Widening ConversionJava 扩展转换
【发布时间】:2018-03-08 22:11:10
【问题描述】:

int big = 1234567890; float approx = big; System.out.println(big - (int)approx);

系统打印出-46。我认为 float 只允许 7 个有效数字,这意味着操作将是 1234567890-1234567=1,233,333,323。它怎么可能打印-46?

【问题讨论】:

  • 不是两个提案的副本。 OP 不明白为什么 1234567 不是 1234567890 的最接近近似值。这与任何事情都无关。
  • idownvotedbecau.se/noresearch,例如打印approx 的值,这会立即突出您对“7 个有效数字”含义的误解。我的意思是,如果代码打印-46,而您期望从一个简单的减法运算中得到1233333323,那么首先想到的应该是减法的两个值不是您认为的那样,然后打印它们将是下一个亲自研究问题。

标签: java precision


【解决方案1】:

我觉得“重要人物”这个词的解释有问题?

你有没有

1234567890 US-dollars

1234567936 US-dollars

没有那么显着的差异。

但如果你有

   1234567 US-dollars

这将是一个非常显着的差异。

1234567890
^       ^
|        \
|         less significant
|
very significant

因此,

1234567890

到 7 位小数有效数字介于(大约)之间

1234567390

和(大约)

1234568390

在这种情况下,结果大致是

1234567936

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-02-23
    • 1970-01-01
    • 1970-01-01
    • 2022-08-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多