Подтвердить что ты не робот

Как вырезать десятичную дробь без округления в C

Как отрезать десятичные знаки в C без округления?

Например, если число 4.48

он просто покажет 4.4

%.1f раундов до 4.5

Спасибо!

4b9b3361

Ответ 1

Вы можете (ab) использовать тот факт, что целочисленное деление усекает и не округляет:

float original = 4.48;

int tmp = original * 10; // 44.8 truncated to 44

float truncated = tmp / 10.0; // 4.4

Ответ 2

Вот простой способ:

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

Ответ 3

Это должно работать

double d = 4.48;
d *= 10.;
int i = d;
d = (double) i / 10.; 

Ответ 4

Если ваш компилятор поддерживает C99, вы можете использовать trunc() и друзей:

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

Ответ 5

float myval = 4.48;
float tr = ((int)(myval*10)) / 10.0;