c语言浮点数精度问题
浮点数在计算机存储的时候,与字面值,不复合,应该怎么办呢,之前书上说浮点数6,也可能存储为5.999;使用了一下const限制浮点值,但是限制不了。所以想问一下,浮点数进行计算的时候应该怎么控制精度, 年少的梦想 发表于 2020-4-24 11:14哎,我这个浮点数要与其他数计算,在输出浮点数之前就错了。如图左边有变量的值,
1.可以试试精度更大的浮点数类型。
2.换个思路,比如:1元=100分=1000厘关于金额直接用整数来计算。2.5元如果浮点的话可能变成2.4999999999999元,但是换成厘单位来计算价格的话,就是2500厘,这样就不会有精度问题了。 可以用这个来判断两个数是不是相等fabs(f1-f2)<1e-12
12为该类型取值的极限 可以利用输出格式来控制精度,比如要输出5.999,输出的格式可以写为printf("%5.3f",浮点变量名);
其中%5.3f中“5”代表控制输出浮点数的长度(包括逗号),“.3”代表控制输出三位小数点。可以通过以上个数来控制输出的长度和精度。 z筱雨 发表于 2020-4-24 11:02
可以利用输出格式来控制精度,比如要输出5.999,输出的格式可以写为printf("%5.3f",浮点变量名);
其中%5.3 ...
哎,我这个浮点数要与其他数计算,在输出浮点数之前就错了。如图左边有变量的值, %.2f保留两位小数
%.3f保留3位小数
以此类推
你试试看 773254968 发表于 2020-4-23 20:56
1.可以试试精度更大的浮点数类型。
2.换个思路,比如:1元=100分=1000厘关于金额直接用整数来计算。2. ...
谢谢了,精度更大指的long double吗 年少的梦想 发表于 2020-4-26 22:08
谢谢了,精度更大指的long double吗
对
页:
[1]