为什么在c#中把double转换为float时,我的精度会下降?

问题描述 投票:0回答:1

我的双值为 10293.01416015625 在c#中,我试图转换为float。由于float只有24位,我想得到的结果为 10293.0141. 但我得到的价值是 10293.0137

double value = 10293.01416015625;
float converted = (float)value;

预期值 - 10293.0141

价值我得到 - 10293.0137

先谢谢你

c# floating-point double precision
1个回答
8
投票

系统.单一文档:

单个值的精度最高为7位小数,但内部最多保持9位。

你的结果正确到7位有效数字(10293.01)。你不应该期望能够得到比这更多的结果。float.

确切的数值是: float最接近10293.01416015625的是10293.013671875和10293.0146484375。两者都离你想表示的值有0.00048828125的距离。

© www.soinside.com 2019 - 2024. All rights reserved.