首页 > 解决方案 > 为什么在 c# 中将 double 转换为 float 时我的精度会丢失?

问题描述

我在 c# 中有双值作为10293.01416015625并且我正在尝试转换为浮点数。由于 float 只有 24 位,我想得到的结果为10293.0141。但我得到的价值是10293.0137

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

预期值- 10293.0141

正在获得的价值- 10293.0137

提前致谢

标签: c#floating-pointdoubleprecision

解决方案


System.Single 文档

单个值具有最多 7 位十进制数字的精度,尽管内部维护最多 9 位数字。

您的结果最多为 7 位有效数字 (10293.01)。你不应该期望能够得到更多float

float最接近 10293.01416015625的 s 的准确值为10293.013671875 和 10293.0146484375。两者都与您尝试表示的值相差 0.00048828125。


推荐阅读