C#中float, double的精度问题
在工作中我发现了一个C#浮点数的精度问题,以下的程序运行结果并未得到我预期的结果:
01
namespace
FloatTest
02
{
03
class
Program
04
{
05
static
void
Main(
string
[] args)
06
{
07
double
a = 0.0001;
08
float
b = 0.1F;
09
10
int
c = (
int
)((a * 1000) / b);
11
12
Console.WriteLine(
"c = {0}"
, c);
13
14
Console.ReadLine();
15
}
16
}
17
}
我期望的结果是得到1,结果程序返回的结果为c = 0
这让我想到了可能是因为浮点数采用IEEE754的表示方法,在运算中b会转换成double,可能是在转换中算法的问题导致精度丢失,为了证实该问题,我做了下面的实验:
CopyRight © 2022 站长资源库 编程知识问答 zzzyk.com All Rights Reserved
部分文章来自网络,