【问题标题】:calculating with two double variables [duplicate]用两个双变量计算[重复]
【发布时间】:2020-09-19 10:13:47
【问题描述】:

这是我的问题的最简单形式,我想知道这是怎么发生的?

Console.WriteLine(3.12 * 3.14);

如何给出这个结果?

9.796800000000001

这让我对我的一般代码和程序产生了问题。如何避免这种情况并给我确切的期望输出?

【问题讨论】:

  • 谢谢,我想知道为什么我不知道这个:(如果我的问题太业余了,对不起。但我在链接中找不到如何避免这个问题的答案。

标签: c# math double calculation


【解决方案1】:

你可以使用float

        var x = (float)3.12;
        // or var x = 3.12f
        var y = (float)3.14;
        var result = x * y;
        Console.WriteLine(result);

【讨论】:

  • 感谢您的回答。为什么(双)不起作用。还有另一个业余问题,为什么float pi = 3.14; 会出错而需要(float)3.14
  • 它是关于 64 位浮点的硬件 (CPU) 计算。编译器为3.14 分配64 位内存,而float 是32 位。 (float) 将 64 位变量(double)转换为 32 位变量(float)。 3.14f直接创建32bit。
  • 当然你也可以使用decimal。舍入错误发生在 64 位。不在 32 位和 128 位上。 decimal 提供更高的灵敏度,但需要更多的 CPU 周期。
  • 是的,我发现这对任何和我有同样问题的人都很有用:net-informations.com/q/faq/float.html 我看到float 也可能在某个地方出现问题。感谢所有的答案。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-09-20
  • 1970-01-01
  • 2021-12-19
  • 1970-01-01
相关资源
最近更新 更多