如何在 C 中不舍入的情况下切断小数



如何在不四舍五入的情况下切断 C 中的小数位?

例如,如果数字为4.48

它只会显示4.4

%.1f轮到4.5

你可以(ab)使用整数除法截断并且不舍入的事实:

float original = 4.48;
int tmp = original * 10; // 44.8 truncated to 44
float truncated = tmp / 10.0; // 4.4

这是一个简单的方法:

printf("%.1f",trunc(x*10.0)/10.0);

如果你的编译器支持 C99,你应该能够使用 trunc() 和朋友:

float f = 4.56f;
f = truncf(f * 10.0) / 10.0;

这应该有效

double d = 4.48;
d *= 10.;
int i = d;
d = (double) i / 10.; 
float myval = 4.48;
float tr = ((int)(myval*10)) / 10.0;

我看到您正在使用格式说明符,这是我从脚本语言中熟悉的。如果您正在使用的那个有效,那么我会假设其余的这些工作也是如此。

我正在考虑的语言使用相同的说明符来提供多种功能。

如果使用"%0.4f",则 3.14159 变为".1415"

如果使用"%2.1F",则变为"03.1"

如果使用"%1.2f",则得到"3.14"

相关内容