如何在不舍入的情况下切断C中的小数位?
例如,如果数字为4.48
它只会显示4.4
%.1f
轮到4.5
答案 0 :(得分:11)
你可以(ab)使用整数除法截断而不是舍入的事实:
float original = 4.48;
int tmp = original * 10; // 44.8 truncated to 44
float truncated = tmp / 10.0; // 4.4
答案 1 :(得分:5)
这是一个简单的方法:
printf("%.1f",trunc(x*10.0)/10.0);
答案 2 :(得分:3)
如果您的编译器支持C99,您应该能够使用trunc()
和朋友:
float f = 4.56f;
f = truncf(f * 10.0) / 10.0;
答案 3 :(得分:1)
这应该有效
double d = 4.48;
d *= 10.;
int i = d;
d = (double) i / 10.;
答案 4 :(得分:0)
float myval = 4.48;
float tr = ((int)(myval*10)) / 10.0;
答案 5 :(得分:-2)
我看到您正在使用格式说明符,这是我从脚本语言中熟悉的格式说明符。如果您使用的那个有效,那么我假设其余的也有效。
我正在考虑的语言使用相同的说明符来提供多种功能。
如果你使用 "%0.4f" 3.14159 变成 ".1415"
如果你使用 "%2.1f" 那么它就会变成 "03.1"
如果您使用“%1.2f”,您将获得“3.14”