-1

我的控制台应用程序看起来像这样。

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

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

在此处输入图像描述

提前谢谢..

4

2 回答 2

4

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

因为默认的项目设置说你需要预编译的头文件(见这个)。

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

在此处输入图像描述


fmod 和 % 之间有什么区别吗?为他们获得完全相同的结果:

是的。%不能对浮点数进行操作,而fmod可以。finfmod表示浮点数。

试试这个:

float a, b;
std::cin>>a>>b;
std::cout << (a%b) << std::endl; //it will give compilation error.
于 2012-06-28T11:34:16.403 回答
1

fmod( a , b ) 将在传递参数时将 int 变量 a 和 b 转换为浮点数。根据 a 和 b 的类型(例如,如果您使用 std::uint64_t),您可能会在强制转换期间失去精度并返回不正确的内容。返回类型也将是浮点数,如果您使用具有 int 类型的函数,则需要再次强制转换。对于 int 类型,您应该坚持使用 % 。使用 fmod 效率较低。

于 2013-10-03T21:11:21.327 回答