我想在C语言中将double类型转换为float类型,但是想尽可能精确地保留小数点,而不做任何改动...
举个例子,假设我有以下数字:
double d = 0.1108;
double dd = 639728.170000;
double ddd = 345.2345678
请纠正我,如果我说错了的话,我知道浮点数精度在小数点后面大约是5个数字。我能够完全获取双精度浮点数小数点后的那五个数字吗?这样以上结果将如下:
float f = x(d);
float ff = x(dd);
float fff = x(ddd);
printf("%f\n%f\n%f\n", f, ff, fff);
它应该打印
0.1108
639728.17000
345.23456
我假设精度限制为5,那么在此之后的所有数字都会被截断。
x
是从double
到float
的强制类型转换(float)
。如果您没有更改默认的最近偶数舍入模式,这个转换计算出最接近所转换的double
的float
。没有比这更好的转换方式了,因此如果这种方法对于您的要求失去了太多的精度,请保留原始的double
。 - Pascal Cuoqfloat
没有那么多的精度(假设它是IEEE单精度)。为什么要使用float
而不是double
? - R.. GitHub STOP HELPING ICE