【问题标题】:Confused by calculation计算混乱
【发布时间】:2023-04-08 15:42:01
【问题描述】:

我正在将一个应用程序从 VB6 移植到 C#。我发现了一个特别是导致我出现问题的计算。它基本上归结为

opperandA *.01 / opperandB

我的具体例子是:

1 * .01 / 12

在 VB6(和 Windows 计算器)中,我得到 8.3333333333e-4。

但是,在 C#(和所有其他计算器)中,我得到 .00083333。

第二个数字对我来说很有意义,但我必须复制第一个结果并且我想理解它,那么为什么 VB6 和 Windows 计算器会产生奇怪的结果?

【问题讨论】:

  • 提示:scientific notation。使用 result.ToString("R") 将 float/double 转换为不带此表示法​​的字符串。

标签: c# vb6 calculator


【解决方案1】:

8.3333333333e-4 与 0.00083333 相同。相当于:

8.3333333333 * 10^-4
= 8.3333333333 times ( ten to the power of -4 )
= 8.3333333333 * 0.0001
= 0.00083333333
N.b. After rounding

e 代表指数,相关的维基百科文章是http://en.wikipedia.org/wiki/Exponentiation

【讨论】:

  • 这很接近,但是 8.3333333333e-4 比 0.00083333 更准确。 VB可能默认为浮点数。试试 opperandA *.01f / opperandB
  • @Matthew 很好的解释。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2018-12-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-02-12
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多