Присвоение значения с плавающей запятой переменной - PullRequest
2 голосов
/ 18 августа 2011

Я хочу сохранить 1.222 в переменной a. Но когда я печатаю, он показывает мне 1.222000, который

означает, что переменная a хранится как 1.222000. Но я хочу сохранить значение как 1.222 в

а. а также я хочу, чтобы только 1.22 было скопировано в b при назначении a = b. Пожалуйста, помогите мне

понимаю, как это сделать.

int main()
{
    float a=1.222,b;
    b=a;//(but b=1.22 and not b=1.222) how to cut the last number 2
    printf("%f\t%f",a,b);
    return 0;
}

Ответы [ 4 ]

2 голосов
/ 18 августа 2011

Вы не можете просто сказать, что float теряет несколько цифр точности во время назначения, вам придется выполнить какое-то приведение типов, чтобы получить ожидаемый результат.Например, чтобы сохранить только 2 цифры точности:

int main()
{
    float a=1.222,b;
    b= ((long)(a * 100)) / 100.0;
    printf("%f\t%f",a,b);
    return 0;
}
1 голос
/ 18 августа 2011

Вы не можете легко изменить значение хранилища, так как это объем выделенной памяти, и это определяется типом данных и системой. Чтобы напечатать два десятичных знака, используйте

printf("%.2f, %.2f", a, b);
0 голосов
/ 18 августа 2011

Если вы хотите округлить само число:

b=round(100*a)/100;
0 голосов
/ 18 августа 2011

Вы не можете изменить, что он хранится, и ваша проблема не имеет никакого отношения к тому, как он хранится.У вас проблема печати .

Если вы хотите удалить лишние нули, измените %f на %g.Но это напечатает 1.222.

Если вы хотите напечатать 1.22, а не 1.222, тогда измените его на %.2f вместо %f.

...