| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 2005 人关注过本帖
标题:计算浮点数相处的余,萌新求解
只看楼主 加入收藏
温柔
Rank: 1
等 级:新手上路
帖 子:12
专家分:0
注 册:2019-10-28
结帖率:60%
收藏
已结贴  问题点数:15 回复次数:5 
计算浮点数相处的余,萌新求解
题目描述】
计算两个双精度浮点数a和b的相除的余数,a和b都是双精度浮点数。这里余数(r)的定义是:a=k×b+r,其中k是整数,0≤r<b。

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

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

【输入样例】
73.263 0.9973
【输出样例】
0.4601

#include <stdio.h>
int main()
{
    double a,b;
    scanf("%lf %lf",&a,&b);
    int k=a/b;
    double r = a-k*b;
    printf("%.4lf",r);
    return 0;
}
不知道哪里错了
搜索更多相关主题的帖子: 浮点数 精度 输出 计算 输入 
2019-10-28 20:54
纯蓝之刃
Rank: 12Rank: 12Rank: 12
等 级:贵宾
威 望:76
帖 子:570
专家分:3727
注 册:2019-7-29
收藏
得分:0 
你这个没问题啊,你为什么说错了呢?你那里是什么现象?

一沙一世界,一花一天堂。无限掌中置,刹那成永恒。
2019-10-28 21:13
温柔
Rank: 1
等 级:新手上路
帖 子:12
专家分:0
注 册:2019-10-28
收藏
得分:0 
回复 2楼 纯蓝之刃
在我的编译器上结果不错,但未通过:
测试点1    答案错误    280KB    3MS
测试点2    答案错误    284KB    2MS
测试点3    答案错误    276KB    2MS
测试点4    答案错误    276KB    2MS
测试点5    答案错误    288KB    2MS
测试点6    答案错误    292KB    3MS
测试点7    答案错误    276KB    2MS
测试点8    答案错误    280KB    2MS
测试点9    答案错误    276KB    2MS
测试点10    答案错误    284KB    2MS
2019-10-28 21:37
rjsp
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:528
帖 子:9025
专家分:54030
注 册:2011-1-18
收藏
得分:10 
你考虑负数了吗?
当说到“余数”时,就应该想到取余数有多种模式:
+7/-4 = -1 …… +3 还是 -2 …… -1 // C99时规定是前者,C99之前为实现定义
-7/+4 = -1 …… -3 还是 -2 …… +1 // C99时规定是前者,C99之前为实现定义
-7/-4 = +1 …… -3 还是 +2 …… +1 // C99时规定是前者,C99之前为实现定义

程序代码:
#include <stdio.h>
#include <math.h>

int main( void )
{
    double a,b;
    scanf( "%lf%lf", &a, &b );

    double r = fmod( a, b );
    if( r < 0 )
        r = fabs(b) + r;

    printf( "%.4f\n", r );
}

2019-10-29 08:57
温柔
Rank: 1
等 级:新手上路
帖 子:12
专家分:0
注 册:2019-10-28
收藏
得分:0 
回复 4楼 rjsp
还是不太懂 ,为什么
if (r<0)
{
r=fabs(b)+r;
}
2019-10-30 08:33
rjsp
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:528
帖 子:9025
专家分:54030
注 册:2011-1-18
收藏
得分:5 
回复 5楼 温柔
这是题目要求的呀 --- “这里余数(r)的定义是:a=k×b+r,其中k是整数,0≤r<b。”

你的代码,
int k=a/b;
double r = a-k*b;
先不管算法是否严谨,但你求出的 r 可能是负值,如果是负值就不符合题意了(0≤r<b)。

而什么情况下你的算法会得到负值,我已经给你例举出来了,见2楼
-7/+4 = -1 …… -3
-7/-4 = +1 …… -3
所以你得将 -3 转化为 +1,也就是:除数的绝对值 加上 你得到的那个负的余数。
2019-10-30 09:43
快速回复:计算浮点数相处的余,萌新求解
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.077465 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved