2

我想将 1.222 存储在变量 a 中。但是当我打印时它显示我 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

4 回答 4

2

您不能简单地告诉浮点数在分配期间丢失一些精度,您必须进行一些类型转换才能获得预期的结果。例如,仅保留 2 位精度:

int main()
{
    float a=1.222,b;
    b= ((long)(a * 100)) / 100.0;
    printf("%f\t%f",a,b);
    return 0;
}
于 2011-08-18T16:51:58.703 回答
1

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

printf("%.2f, %.2f", a, b);
于 2011-08-18T16:49:09.183 回答
0

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

如果要删除多余的零,请更改%f%g. 但这会打印1.222.

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

于 2011-08-18T16:48:55.957 回答
-1

如果要对数字本身进行四舍五入:

b=round(100*a)/100;
于 2011-08-18T16:52:10.147 回答