将float值赋给变量

时间:2011-08-18 16:46:45

标签: c floating-point floating-point-conversion

我想在变量a中存储1.222。但是当我打印它时显示我1.222000其中

表示变量a存储为1.222000。但我想将值存储为1.222

一个。并且我还希望在分配a = b时仅将1.22复制到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 个答案:

答案 0 :(得分:2)

你不能简单地告诉浮点数在赋值期间丢失一些精度数字,你必须做一些类型转换才能得到预期的结果。例如,仅保留2位精度:

int main()
{
    float a=1.222,b;
    b= ((long)(a * 100)) / 100.0;
    printf("%f\t%f",a,b);
    return 0;
}

答案 1 :(得分:1)

您无法轻易更改存储值,因为这是分配的内存量,并且由数据类型和系统决定。要打印两位小数,请使用

printf("%.2f, %.2f", a, b);

答案 2 :(得分:0)

您无法更改它已存储,您的问题与其存储方式无关。您有打印问题。

如果您想删除多余的零,请将%f更改为%g。但这将打印1.222

如果您要打印1.22而不是1.222,请将其更改为%.2f而不是%f

答案 3 :(得分:-1)

如果您想对数字本身进行舍入:

b=round(100*a)/100;