c语言正常除法double,解决double类型除法误差问题

原来的计算器如果输990/1.1就会出现899.999999999999986这串数字,而正确答案应是900整,这个问题应该是double类型的浮点误差导致的网上那些人说用%.0f在printf里就可以了,这实质上没有解决任何问题,给出来的“正确”答案实际上是因为四舍五入的原因进位成了正确答案。我一看到这个问题就想到了最近数学课上一直在叨唠的分数除法中的倒数(虽然我早学过了,但是学校刚教到这儿),因为倒数的概念不止适用于分数,再说除法中的被除数就是分子,除数就是分母,这样就变成了一个分数嘛。所以990/1.1应该和990*0.9090909090909090。。。。。。。的结果是一样的,虽然这是一个循环小数,但是小数点后15位对计算机来说足够精确了,没问题。但是我算倒数的时候是把1.1换成分数也就是1又10分之1换成假分数就是10分之11倒过来变成11分之10,就是0.9090909090。。。。。了。但是要想指望计算机完成这些恐怕需要不少行代码,所以我觉得这个办法肯定了。可是其它方法我也没想着,就再去琢磨这个方法,不出三秒我就想到倒数的概念就是两个乘积为1的数字,互为倒数,所以用1除以除数就可以得到除数的倒数了,这个计算机肯定做得到,因此这么一写,果然成了!虽然还有除法,虽然还可能有误差,但好歹可能性大大降低了啊!

大家可以从

​http://pan.baidu.com/s/1ntDzQ3Z下载我的计算器(此最新版为测试版,可能会有一些问题),如果有任何问题或bug可以联系我:

QQ:2826780896

邮箱:zhuzhu81998@lcts.space

最晚三个工作日内我将会给您答复!​

注意:测试出错误的时候请务必记住错误重现方法!

欢迎编程爱好者加入21世纪编程工作室!

QQ群号:414167054​

谢谢大家的支持和浏览!

——By

zhuzhu81998​

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值