如何在没有舍入C的情况下关闭十进制

时间:2012-10-06 21:24:50

标签: c rounding

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

例如,如果数字为4.48

它只会显示4.4

%.1f轮到4.5

6 个答案:

答案 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”