我想在变量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;
}
答案 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;