假设a
=3.91900007534
.
在C语言中,我想将变量a
的值存储在另一个变量r
中,直到小数点后两位,这样r
=3.92
.
注意,我不想打印值到小数点后两位,我只想存储值,因为我需要r
的确切值用于下一个操作。
简单地,只需乘以100,用floor
截断数字并除以100:
double convert( double in ){
return floor(in*100)/100.0;
}
更通用的方法:
#include <math.h>
double convert( double in, int decimals ){
double aux = pow(10,decimals);
return floor(in*aux)/aux;
}
正如@Some程序员所说,上面的代码被截断了。如果您想四舍五入,只需将floor()
替换为round()
:
double convert( double in ){
return round(in*100)/100.0;
}
下面的代码运行:https://onlinegdb.com/By-a1Urf_
我能想到的最快的方法是使用以下方法,即乘以100,四舍五入,然后再除以100:
int main()
{
float number = 1.2345672;
// Setting precision to 2 digits
number = round(number*100)/100;
printf("%g", number);
return 0;
}
当然,如果你想要3个小数点,它将是1000,而不是100。
我们可以做一个很好的一般函数,像这样:
double precisionSetter(double num, double precision)
{
return round(pow(10,precision)*num)/pow(10,precision);
}
所以你可以很容易地选择你想要的小数位数:
double a = 1.234567
a = precisionSetter(a,2)
上述语句将对浮点数进行舍入。如果您对截断上述浮点数感兴趣,请使用floor()
函数而不是round()
函数。