鱼C论坛

 找回密码
 立即注册
查看: 1813|回复: 7

[已解决]c语言浮点数精度问题

[复制链接]
发表于 2020-4-23 20:56:51 | 显示全部楼层 |阅读模式
10鱼币
浮点数在计算机存储的时候,与字面值,不复合,应该怎么办呢,之前书上说浮点数6,也可能存储为5.999;使用了一下const限制浮点值,但是限制不了。所以想问一下,浮点数进行计算的时候应该怎么控制精度,
最佳答案
2020-4-23 20:56:52
年少的梦想 发表于 2020-4-24 11:14
哎,我这个浮点数要与其他数计算,在输出浮点数之前就错了。如图左边有变量的值,

1.可以试试精度更大的浮点数类型。
2.换个思路,比如:1元=100分=1000厘  关于金额直接用整数来计算。2.5元如果浮点的话可能变成2.4999999999999元,但是换成厘单位来计算价格的话,就是2500厘,这样就不会有精度问题了。

最佳答案

查看完整内容

1.可以试试精度更大的浮点数类型。 2.换个思路,比如:1元=100分=1000厘 关于金额直接用整数来计算。2.5元如果浮点的话可能变成2.4999999999999元,但是换成厘单位来计算价格的话,就是2500厘,这样就不会有精度问题了。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2020-4-23 20:56:52 | 显示全部楼层    本楼为最佳答案   
年少的梦想 发表于 2020-4-24 11:14
哎,我这个浮点数要与其他数计算,在输出浮点数之前就错了。如图左边有变量的值,

1.可以试试精度更大的浮点数类型。
2.换个思路,比如:1元=100分=1000厘  关于金额直接用整数来计算。2.5元如果浮点的话可能变成2.4999999999999元,但是换成厘单位来计算价格的话,就是2500厘,这样就不会有精度问题了。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2020-4-23 21:35:56 | 显示全部楼层
可以用这个来判断两个数是不是相等fabs(f1-f2)<1e-12
12为该类型取值的极限
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2020-4-24 11:02:16 | 显示全部楼层
可以利用输出格式来控制精度,比如要输出5.999,输出的格式可以写为printf("%5.3f",浮点变量名);
其中%5.3f中“5”代表控制输出浮点数的长度(包括逗号),“.3”代表控制输出三位小数点。可以通过以上个数来控制输出的长度和精度。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2020-4-24 11:14:18 | 显示全部楼层
z筱雨 发表于 2020-4-24 11:02
可以利用输出格式来控制精度,比如要输出5.999,输出的格式可以写为printf("%5.3f",浮点变量名);
其中%5.3 ...

哎,我这个浮点数要与其他数计算,在输出浮点数之前就错了。如图左边有变量的值,
41V{W%(WYPL7TCJH$9VZS%0.png
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2020-4-26 16:21:42 | 显示全部楼层
%.2f保留两位小数
%.3f保留3位小数
以此类推
你试试看
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2020-4-26 22:08:09 From FishC Mobile | 显示全部楼层
773254968 发表于 2020-4-23 20:56
1.可以试试精度更大的浮点数类型。
2.换个思路,比如:1元=100分=1000厘  关于金额直接用整数来计算。2. ...

谢谢了,精度更大指的long double吗
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2020-4-27 09:46:03 | 显示全部楼层
年少的梦想 发表于 2020-4-26 22:08
谢谢了,精度更大指的long double吗

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-1-14 18:41

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表