C语言怎样求两个double型数据相除求余数?

如题所述

1.首先请打开Visualc++6.0,(本文使用Visualc++6.0软件操作,也可以使用VisualStudio或其他C/c++编程软件),如图所示后成功打开。

2.点击左上角的“文件”菜单按钮,点击“新建”按钮。在弹出窗口中,首先选择“File”选项卡,然后在左侧列表中选择“c++源文件”项,如下所示。

3.在正确文件名的文本框中输入文件名,如“demo”等。

4.根据图片输入演示代码,如下图所示。

5.运行代码:按箭头指示的顺序点击箭头所指的按钮。当最后一个按钮成功按下后,会弹出如图所示的黑色窗口。程序运行的结果将显示在表单中,并将获得正确的值。

6.代码说明:图中的绿色字体说明了代码行的含义。核心代码为d=5%3;“%”是余数运算符

7.完成效果图,如下图所示。

温馨提示:答案为网友推荐,仅供参考
第1个回答  推荐于2017-11-24
在C语言中,只有整数才能求取余数,如果需要求取浮点数的余数,只能用变通的方法进行。
double num1 = 12.56,num2 = 4.0;
double remainder;
remainder = num1 - (int)(num1/num2);追问

但(int)(num1/num2)是按照四舍五入的规则的吗?这样不是会产生误差?
有没有听说过math.h 里面的fmod()函数,在网上看到的,不知道是不是真的有!

追答

是的,有可能,下面的改进版。
double num1 = 12.56,num2 = 4.0;
double remainder = (num1 - num1/num2)*num2;
fmod()函数在不同的编译环境下实现的方法,甚至是否实现都是可能的,为了有更好的兼容性,还是根据C语言的基本功能实现更合适。

追问

应该是double remainder =number1-(number1/number2)*number2吧!

本回答被提问者采纳
第2个回答  2011-08-21
1.double a,b;
scanf("%lf%lf",&a,&b);
a=a-(int)(a/b)*b;
printf("%lf",a);

2.fmod函数也行追问

第一种方法有误差,因为a/b是按四舍五入取整的!是吗?

追答

其实第一种方法是fmod的翻版

追问

那fmod会产生误差吗 ?

追答

计算机中都是以二进制形式存储的。误差是不可避免的。基本都有误差

追问

其实还有个问题,就是内存引用错误!真蛋痛!有兴趣帮忙一下吗?Q631374745

第3个回答  2011-08-21
%号不就是求余的么?追问

%z只能用于整型数据

追答

这样啊,那试试fmod函数,可以求两个浮点型余数,要包含math.h。

相似回答