标题:[求助]遇到一个问题
只看楼主
animeo
Rank: 1
等 级:新手上路
帖 子:32
专家分:0
注 册:2007-10-2
 问题点数:0 回复次数:7 
[求助]遇到一个问题

#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啊

搜索更多相关主题的帖子: Frac Money Cents num float 
2007-10-09 17:06
aipb2007
Rank: 8Rank: 8
来 自:CQU
等 级:贵宾
威 望:40
帖 子:2879
专家分:7
注 册:2007-3-18
得分:0 
什么意思?

结果不对,还是格式不对?

Fight  to win  or  die...
2007-10-09 17:24
animeo
Rank: 1
等 级:新手上路
帖 子:32
专家分:0
注 册:2007-10-2
得分:0 
我觉得应该是71呀,怎么会是70.9997啊

希望成为一名出色的程序员
2007-10-09 21:04
hhei
Rank: 2
等 级:论坛游民
帖 子:36
专家分:27
注 册:2007-10-14
得分:0 
这个程序是作什么用的啊,学习一下,希望多多指教。
还有math::modff(float ,float)这个函数是做什么用的啊

2007-10-15 16:52
eagleboycn
Rank: 1
等 级:新手上路
帖 子:191
专家分:0
注 册:2007-9-26
得分:0 
以下是引用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.

刚刚查到
分享一下


兵法的精要在于韬晦自己
2007-10-15 16:59
eagleboycn
Rank: 1
等 级:新手上路
帖 子:191
专家分:0
注 册:2007-9-26
得分:0 
好像不一样?
查到的是modf,
LZ用的是modff,
看作用应该是一样的,不知道为什么
请高手解答一下啊

兵法的精要在于韬晦自己
2007-10-15 17:03
從霝開匙
Rank: 1
等 级:新手上路
威 望:1
帖 子:79
专家分:0
注 册:2007-8-28
得分:0 
这个好是是货币转换用的

math::modff(float val , *ipart)将参变量val分解成整数部分和小数部分;其中小数由函数返回,整数则存储在参
变量ipart中
后面的参数应该是个指针或地址哦

0→..................
2007-10-15 17:15
eagleboycn
Rank: 1
等 级:新手上路
帖 子:191
专家分:0
注 册:2007-9-26
得分:0 
modff 是专门为货币转换用的?
那和modf 有什么区别呢

兵法的精要在于韬晦自己
2007-10-15 17:18



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-176177-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.017708 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved