我有以下visual c ++代码
#include <iostream>
#include <string>
#include <sstream>
#include <math.h>
using namespace std;
int Main()
{
double investment = 0.0;
double newAmount = 0.0;
double interest = 0.0;
double totalSavings = 0.0;
int month = 1;
double interestRate = 0.065;
cout << "Month\tInvestment\tNew Amount\tInterest\tTotal Savings";
while (month < 10)
{
investment = investment + 50.0;
if ((month % 3 == 0))
{
interest = Math::Round((investment * Math::Round(interestRate/4, 2)), 2);
}
else
{
interest = 0;
}
newAmount = investment + interest;
totalSavings = newAmount;
cout << month << "\t" << investment << "\t\t" << newAmount << "\t\t" << interest << "\t\t" << totalSavings;
month++;
}
string mystr = 0;
getline (cin,mystr);
return 0;
}
但它给我使用Math :: Round的问题,真的我不知道如何使用visual c ++来使用这个函数
答案 0 :(得分:7)
Math :: Round()是.NET,而不是C ++。
我不相信C ++中有直接的平等。
你可以这样编写自己的(未经测试):
double round(double value, int digits)
{
return floor(value * pow(10, digits) + 0.5) / pow(10, digits);
}
答案 1 :(得分:6)
不幸的是,Math :: Round是.NET框架的一部分,并不是普通C ++规范的一部分。有两种可能的解决方案。
第一种是自己实现圆形功能,使用来自&lt; cmath&gt;的ceil或floor。并创建类似于以下的功能。
#include <cmath>
inline double round(double x) { return (floor(x + 0.5)); }
第二个是为您的C ++程序启用公共语言运行时(CLR)支持,这将允许访问.NET框架,但代价是它不再是真正的C ++程序。如果这只是一个供您自己使用的小程序,这可能不是什么大问题。
要启用CLR支持,请执行以下操作:
右键单击您的解决方案,然后单击属性。然后单击配置属性 - &gt;一般 - &gt;项目默认值。在Common Language Runtime支持下,选择Common Language Runtime Support选项(/ clr)。然后单击“应用”和“确定”。
接下来,将以下内容添加到代码顶部:
using namespace System;
现在,您应该可以像使用任何其他.NET语言一样使用Math :: Round。
答案 2 :(得分:4)
刚刚遇到这个问题,现在是2013年。
这在C11中受支持,而不是旧版本。所以,是的,批准的答案在09年是合适的。
如果您使用的是C11,那么
include <math.h>
你应该可以打电话给#34; round&#34;,
这样:
double a = 1.5;
round(a);
导致:
a == 1.0
答案 3 :(得分:0)
AFAICT cmath(math.h)不定义Round函数,也不定义Math名称空间。见http://msdn.microsoft.com/en-us/library/7wsh95e5%28VS.80,loband%29.aspx
答案 4 :(得分:0)
你可能最好添加0.5并使用另一篇文章中提到的floor()来获得基本的舍入。