c语言如何四舍五入 跟 进一法除法 的 算法
来源:学生作业帮 编辑:神马作文网作业帮 分类:综合作业 时间:2024/11/11 00:42:28
c语言如何四舍五入 跟 进一法除法 的 算法
程序是1:e=(a+(b/2))/b e:计算结果 a:被除数 b:除数:
2(进一法):e=(a+(b-1))/b
程序是1:e=(a+(b/2))/b e:计算结果 a:被除数 b:除数:
2(进一法):e=(a+(b-1))/b
很容易理
先解释第二个
e=(a+b-1)/b;
设 a=n*b+k n=0,1, k=1,.b-1
那么 当k=1 余数最小时
a+b-1=n*b+1+b-1=(n+1)*b 正好进了一位
第一个:
e=(a+b/2)/b
这个应该错了吧
我觉得应该是float 或double 就可以了
如
e=(a+b/2)/(1.0*b) 这样就可以了
e=a/b+0.5 就是四舍五入
再问: 程序1的变量值都是uint。 请在解释一遍 O(∩_∩)O谢谢
再答: 如果是 uint 那就错了,
e=(a+b/2.0)/(1.0*b)
就对了
先解释第二个
e=(a+b-1)/b;
设 a=n*b+k n=0,1, k=1,.b-1
那么 当k=1 余数最小时
a+b-1=n*b+1+b-1=(n+1)*b 正好进了一位
第一个:
e=(a+b/2)/b
这个应该错了吧
我觉得应该是float 或double 就可以了
如
e=(a+b/2)/(1.0*b) 这样就可以了
e=a/b+0.5 就是四舍五入
再问: 程序1的变量值都是uint。 请在解释一遍 O(∩_∩)O谢谢
再答: 如果是 uint 那就错了,
e=(a+b/2.0)/(1.0*b)
就对了