【已解决】1029:计算浮点数相除的余(10.18测试点5和8一直报错)

1029:计算浮点数相除的余(10.18测试点5和8一直报错)

(19.10.27)最新更新,确实是因为有a<0的情况, 所以要加入一个判断, 1029通过.
事实证明, fmod函数不好用!
而且对于6.6/2.2,7.7/1.1这种变态精度问题,还是留给行业专家吧


(19.10.27)研究了半天,发现输入6.6 2.2的时候答案是有问题的,而且当a<0的时候,r<0,是因为这两点原因吗?


(2019-10-18)这题不知道今天咋了,测试点5和8一直错误,估计数据出错了。。。明明这么简单的,不知道错哪里了(╬ ̄皿 ̄)


时间限制: 1000 ms 内存限制: 65536 KB
提交数: 27726 通过数: 15555

【题目描述】

计算两个双精度浮点数a和b的相除的余数,a和b都是双精度浮点数。这里余数(r)的定义是:a=k×b+r,其中k是整数,0≤r<b。

【输入】

输入仅一行,包括两个双精度浮点数a和b。

【输出】

输出也仅一行,a÷b的余数。

【输入样例】

73.263 0.9973

【输出样例】

0.4601


方法1:

#include <iostream>
#include <iomanip>
#include <cstdio>

using namespace std;

int main()
{
	int k;
	double a,b,r;
	cin>>a>>b;
	if(a>=0){
		k = a/b;
	}
	else {
		k = a/b - 1;
	}
	r = a - k*b;
	cout<<r<<endl;
	return 0;
 } 

方法2:

#include <iostream>
#include <cstdio>

using namespace std;

int main()
{
    double a,b,r;
    int k;
    scanf("%lf%lf",&a,&b);
    if(a>=0){
		k = a/b;
	}
	else {
		k = a/b - 1;
	}
    r = a - k*b;
    printf("%g",r);
	return 0;
 } 
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值