gpt4 book ai didi

java - 十进制负数和正数之和

转载 作者:太空宇宙 更新时间:2023-11-03 20:00:49 25 4
gpt4 key购买 nike

在 Java 和 C# 中:

int a = (int)(-1.5 + 2.5);
int b = (int)(-1.55 + 2.55);
int c = (int)(1.45 + 2.55);
// a = 1; b = 0; c = 4;

谁能解释为什么将正数加到小数点后 2 位或更多位的负数会导致小数点中断? “b = 0.99999999999999978”。

所以问题是 - 为什么是“-1.5 + 2.5 = 1”,但“-1.55 + 2.55 = 0”?

最佳答案

这是因为 double 类型是一个近似值。

通常 double 表示 IEEE 754标准型decimal64


Math.Round allows you to specify a MidpointRounding:

ToEven - When a number is halfway between two others, it is rounded toward the nearest even number.

AwayFromZero - When a number is halfway between two others, it is rounded toward the nearest number that is away from zero.

示例:

var val = (int)Math.Round((-1.55 + 2.55), 1, MidpointRounding.ToEven);
Console.WriteLine(val);

输出:1


初学者的常见错误是编写如下代码:

for (double i = 0.0; i == 6.0; i+=0.1)
{
Console.WriteLine(i);
}

提示:这不会在大约 60 步后结束。

关于java - 十进制负数和正数之和,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28626944/

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