C语言问题,float不是保留八位吗,为啥这里要加四个0?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C语言问题,float不是保留八位吗,为啥这里要加四个0?相关的知识,希望对你有一定的参考价值。

参考技术A 不是保留8位,而是默认显示小数点后6位本回答被提问者采纳 参考技术B 因为早期实现printf的工程师,其对%f格式的实现是:小数点后保留6个小数点,然后传承下来就成你看到的样子。
如果早期那个工程师的实现是:只保留7个有效数字,那么你就会得到:123.4600
%f 只用来影响输出的显示,实际运算时都是 双精度类型 运算,有效数字有15、16位。
参考技术C float保留八位大概是“计算精度”,和这里显示多少位没有啥特别关系

.NET中float怎么让小数强制保留一位

.NET中float怎么让小数强制保留一位?
private float su(float a, float b)
return (b - a) / a;
protected void Button2_Click(object sender, EventArgs e)

a2.Text = su(float.Parse(a.Text), float.Parse(a1.Text)) + "";

参考技术A 1 用Math类里面的方法就可以了,比如Math.round,取一位时要注意数位的舍入和取整的问题.还有要先转换成decimal类型
2 用字符串格式化的方式,配合特定的格式化符号来操作,比如F1,比如0.0,具体代码比如:
float a = 1.111f;
Console.WriteLine(a.ToString("0.0"));
打印结果为1.1,您可能要问0.0撒意思,0在这里表示数字的意思,类似的还有一个数字占位符"#"
同样的符号可以用string.format同等替换:
float a = 1.111f;
Console.WriteLine("0:0.0",a);
打印结果是一样的
更多的字符串格式化可以看msdn
3 就是自己写方法了,通过截取字符串来判断小数位数.这里不再赘述
参考技术B a2.Text = su(float.Parse(a.Text), float.Parse(a1.Text)).ToString("F1");

以上是关于C语言问题,float不是保留八位吗,为啥这里要加四个0?的主要内容,如果未能解决你的问题,请参考以下文章

在C语言中scanf能作为用户标示符么?为啥?scanf不是关键词么?

JAVA hashcode可以取八位吗

关于C语言小数点后多少位的问题

C语言变量的基本类型都有哪些?

c语言输出数据类型时为啥要加双引号?

C语言 counter=counter+1 是啥意思,为啥后面要加1,去掉行吗?与while 有什关系?