在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,但不在此。这里有什么问题?
将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);