在C#中将double转换为float,给出错误的值

本文关键字:出错 错误 float 中将 double 转换 | 更新日期: 2023-09-27 18:20:01

问题非常简单。我有一个double,我想把它转换成float。

double doubleValue = 0.00000000000000011102230246251565;
float floatValue = (float)doubleValue;

现在,当我这样做的时候。浮点值简直疯了。其值为"1.10223E-16"是否需要为此流做一些额外的操作。值应为0或0.1,但不在此。这里有什么问题?

在C#中将double转换为float,给出错误的值

double转换为float肯定会失去精度。但值1.110223E-16是指数表示法,即提高到-16的幂,这意味着它有点像0.0000000000000001110223

您应该使用Math.Round()对数字进行四舍五入。

浮动非常好。它表示双倍值,精确到浮点值。

CCD_ 5是CCD_ 6的另一种表示法。

Double双精度浮点数,但float单精度浮点数

因此,通常情况下,将Double转换为float时可能会丢失精度。CCD_ 11与CCD_。

如果要将值四舍五入到最接近的数字,可以使用Math.Round()方法。

将值四舍五入到最接近的整数或指定的小数位数。

看看浮动点指南

浮点能够以完美的精度表示大约6个有效数字。这与我认为你所假设的小数点后6位不同。

实际上它给出了正确的值。

转换为浮动后去掉指数怎么样

double doubleValue = 0.00000000000000011102230246251565;
float result = (float)doubleValue;
decimal d = Decimal.Parse(result.ToString(), System.Globalization.NumberStyles.Float);
相关文章: