用于计算模量的%与FMOD

时间:2012-06-28 11:29:57

标签: c++ windows visual-studio-2010 visual-studio console-application

我的控制台应用看起来就是这样。

#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 ++的新手,我有两个问题:

  1. 在VS上编写此应用程序。为什么我需要包含“stdafx.h”?有什么要求吗?这是什么?
  2. fmod%之间有什么区别吗?获得完全相同的结果:
  3. enter image description here

    提前......

2 个答案:

答案 0 :(得分:4)

  

在VS上编写此应用程序。为什么我需要包含“stdafx.h”?有什么要求吗?这是什么?

因为默认项目设置表明您需要预编译标题(请参阅this)。

您可以手动禁用此功能。选择不使用预编译标题,如下图所示:

enter image description here


  

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的效率较低。