我的控制台应用看起来就是这样。
#include "stdafx.h"
#include <iostream>
#include <cmath>
using namespace std;
int _tmain(int argc, _TCHAR* argv[])
{
int a, b;
cin>>a>>b;
cout<<"% "<<a%b<<endl<<"fmod "<<fmod(a,b)<<endl;
system("pause");
return 0;
}
我是C ++的新手,我有两个问题:
fmod
和%
之间有什么区别吗?获得完全相同的结果:
提前......
答案 0 :(得分:4)
在VS上编写此应用程序。为什么我需要包含“stdafx.h”?有什么要求吗?这是什么?
因为默认项目设置表明您需要预编译标题(请参阅this)。
您可以手动禁用此功能。选择不使用预编译标题,如下图所示:
fmod和%之间有什么区别吗?获得完全相同的结果:
是。 %
无法对浮点指针数进行操作,fmod
可以。 fmod
中的f
表示浮点数。
试试这个:
float a, b;
std::cin>>a>>b;
std::cout << (a%b) << std::endl; //it will give compilation error.
答案 1 :(得分:0)
fmod(a,b)将在传递参数时将int变量a和b转换为浮点数。根据a和b的类型(例如,如果使用std :: uint64_t),在演员表中可能会丢失精度并返回错误的内容。返回类型也将是一个浮点数,如果你正在使用带有int类型的函数,则需要再次强制转换。对于int类型,你应该坚持使用%。使用fmod的效率较低。