c语言中数据精度发生错误,C语言Double类型数据保证精度有关问题

博客讨论了在C语言中使用Double类型数据时遇到的精度问题,指出浮点数不能精确表示某些十进制数,并给出了可能造成误差的原因,如数据转换、计算次数过多等。建议使用定点数或检查数据数量级,并引用了VC++中double类型的精度标准。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

C语言Double类型数据保证精度问题

我用手算算出的数据为-1.35323517,但是在C语言里面为了保证数据精度,VC++运行的结果为-1.35323517024517 ,按说应该在-1.35323517后面补零,但是补的却是024517 ,补上这几位会严重影响我最后的计算结果,怎么样才能让其后面补零而不是024517呢 ,请各位高手指点一下、、

Visual C++

double类型数据精度

------解决方案--------------------

用定点数, 不要用 double.

浮点数对某些十进制数是无法表示的, 只能用一个最接近它的值来表示.

------解决方案--------------------

差这么多?应该中间转过float或者计算次数太多,不然double不会有这么大误差

------解决方案--------------------

是不是用 int 得看你要表示的数的范围.

用 BCD 码是 4 个 bit 表示一个十进制数. 所以, 使用 int, 保留 2 位小数的话, 范围就是 0.00 ~ 999999.99

------解决方案--------------------

引用:计算过程我定义的每个变量都是double类型的,而且是 第一次计算的时候就出现了、、

不应该把,要不就是数据数量级差太多,把代码贴上来看看?

------解决方案--------------------

用10进制小数不能精确表示某些三进制小数0.1(3)=0.33333333333……(10)

同理,用二进制小数也不能精确表示某些10进制小数。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值