有人可以解释我如何选择具有C函数的浮点精度?如何设置浮点精度
例子:
theFatFunction(0.666666666, 3)
收益:0.667
theFatFunction(0.111111111, 3)
收益:0.111
有人可以解释我如何选择具有C函数的浮点精度?如何设置浮点精度
例子:
theFatFunction(0.666666666, 3)
收益:0.667
theFatFunction(0.111111111, 3)
收益:0.111
由于精度取决于数据类型(即float
或double
或double
或long double
),所以不能这样做。如果您想将其用于打印目的,则可以使用printf()
中的适当格式说明符,即printf("%0.3f\n", 0.666666666)
。
你不能。精度完全取决于数据类型。你有float
和double
就是这样。
浮动具有静态的,固定的精度。你不能改变它。你有时可以做的是围绕这个数字。
请参阅this page,并考虑按照10的幂度量自己。请注意,并非所有数字都可以精确地表示为浮点数。
你可以做floor(x * 100)/100.0 – 2012-02-09 15:12:15
大多数系统遵循IEEE-754浮点标准,该标准定义了几种浮点类型。
在这些系统上,通常float
是IEEE-754 binary32
单精度类型:它具有24位的精度。 double
是binary64
双精度型;它具有53位的精度。位数的精度由IEEE-754标准定义,不能改变。
使用fprintf
系列的函数(例如,printf
)打印浮点类型的值时,精度被定义为最大有效位数,默认情况下被设置为6位数。您可以在转换规范中使用.
后跟一个十进制数来更改默认精度。例如:
printf("%.10f\n", 4.0 * atan(1.0)); // prints 3.1415926536
而
printf("%f\n", 4.0 * atan(1.0)); // prints 3.141593
精度由数据类型(即浮动或双或双长)来确定。
如果你想详谈印刷的目的,你可以使用printf的)正确的格式说明(即
printf("%0.3f\n", 0.666666666) //will print 0.667 in c
现在,如果你想详谈计算,你必须先乘目的浮子10 ^的位数然后类型转换为int,执行计算,然后再次类型转换浮起并除以10
float f=0.66666;
f *= 1000; // 666.660
int i = (int)f; // 666
i = 2*i; // 1332
f = i; // 1332
f /= 1000; // 1.332
printf("%f",f); //1.332000
的可能重复的相同的功率[舍入数为2位小数在C](HTTP: //stackoverflow.com/questions/1343890/rounding-number-to-2-decimal-places-in-c) – 2012-02-09 15:11:00