注册 登录
编程论坛 C++教室

[求助]遇到一个问题

animeo 发布于 2007-10-09 17:06, 629 次点击

#include<iostream.h>
#include<math.h>
class Money{
float Dollars;
float Cents;
public:
Money(){Dollars=Cents=0;}
Money(float,float);
Money(float);
Money operator++();
Money operator++(int);
float GetAmount(float*);
~Money(){}
void Show(){cout<<Dollars<<'\t'<<Cents<<'\n';}
};
Money::Money(float n)
{
float Frac,num;
Frac=modff(n,&num);
Cents=Frac*100;
Dollars=num;
}
Money::Money(float d,float c)
{
float sum,dd,cc;
sum=d+c/100;
cc=modff(sum,&dd);
Dollars=dd;
Cents=cc*100;
}
Money Money::operator++()
{
Cents++;
if(Cents>=100){
Dollars++;
Cents-=100;
}
return*this;
}
Money Money::operator++(int)
{
Money t=*this;
Cents++;
if(Cents>=100){
Dollars++;
Cents-=100;
}
return t;
}
float Money::GetAmount(float*n)
{
*n=Dollars;
return Cents;
}
void main(void)
{
Money m1(25,50),m2(105.7),m3(1002.25,200.35);
Money c,d;
float e1,f1,e2,f2;
m1.Show();
c=++m1;
d=m1++;
c.Show();d.Show();
c=++m2;
d=m2++;
c.Show();d.Show();
e1=m2.GetAmount(&f1);
e2=m3.GetAmount(&f2);
cout<<f1+f2<<"yuan"<<'\t'<<e1+e2<<"fen"<<'\n';
}

为什么这个输出是这样啊:
25 50
25 51
25 51
105 70.9997
105 70.9997
1109yuan 97.3476fen
为什么是70.9997啊

7 回复
#2
aipb20072007-10-09 17:24
什么意思?

结果不对,还是格式不对?
#3
animeo2007-10-09 21:04
我觉得应该是71呀,怎么会是70.9997啊
#4
hhei2007-10-15 16:52
这个程序是作什么用的啊,学习一下,希望多多指教。
还有math::modff(float ,float)这个函数是做什么用的啊
#5
eagleboycn2007-10-15 16:59
以下是引用hhei在2007-10-15 16:52:34的发言:
这个程序是作什么用的啊,学习一下,希望多多指教。
还有math::modff(float ,float)这个函数是做什么用的啊

LS:
#include <math.h>
double modf( double num, double *i );

The function modf() splits num into its integer and fraction parts. It returns the fractional part and loads the integer part into i.

刚刚查到
分享一下

#6
eagleboycn2007-10-15 17:03
好像不一样?
查到的是modf,
LZ用的是modff,
看作用应该是一样的,不知道为什么
请高手解答一下啊
#7
從霝開匙2007-10-15 17:15
这个好是是货币转换用的

math::modff(float val , *ipart)将参变量val分解成整数部分和小数部分;其中小数由函数返回,整数则存储在参
变量ipart中
后面的参数应该是个指针或地址哦
#8
eagleboycn2007-10-15 17:18
modff 是专门为货币转换用的?
那和modf 有什么区别呢
1