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;
}