gpt4 book ai didi

C# double 问题

转载 作者:太空狗 更新时间:2023-10-29 19:52:44 24 4
gpt4 key购买 nike

假设 a - b < c(a、b、c 是 C# double )。是否保证 a < b + c

谢谢!

编辑
假设算术溢出不会发生,这与以下示例不同:

double a = 1L << 53;
double b = 1;
double c = a;

Console.WriteLine(a - b < c); // Prints True
Console.WriteLine(a < b + c); // Prints False

假设 Math.Abs​​(a) < 1.0 && Math.Abs​​(b) < 1.0 && Math.Abs​​(c) < 1.0

最佳答案

没有。假设a = c,一个很大的数,b是一个很小的数。 a - b 的表示可能小于 a,但 a + b 非常接近 a (甚至更大)它最终仍然可以最精确地表示为 a

这是一个例子:

double a = 1L << 53;
double b = 1;
double c = a;

Console.WriteLine(a - b < c); // Prints True
Console.WriteLine(a < b + c); // Prints False

编辑:

这是另一个与您编辑的问题相匹配的示例:

double a = 1.0;
double b = 1.0 / (1L << 53);
double c = a;

Console.WriteLine(a - b < c); // Prints True
Console.WriteLine(a < b + c); // Prints False

换句话说,当我们从 1 中减去一个非常小的数字时,我们得到的结果小于 1。当我们将相同的数字与 1 相加时,由于 double 的限制,我们只得到 1。

关于C# double 问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3634403/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com