如何存储一个十进制值高达2位的另一个变量在C?



假设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()函数。

相关内容

最新更新