C# 制作一个表示分数的类 当设计这个对象时,我需要考虑的一些事情是什么? 这就是我所能想到的 int nominator int denominator int sign
此对象可用于数学运算考虑类的行为。您希望在此分数类上执行哪些操作C# 制作一个表示分数的类 当设计这个对象时,我需要考虑的一些事情是什么? 这就是我所能想到的 int nominator int denominator int sign,c#,math,C#,Math,此对象可用于数学运算考虑类的行为。您希望在此分数类上执行哪些操作 创建它-这意味着一个构造函数。那么构造函数应该采用什么参数呢?2英寸?2个整数和一个布尔符号?ints也可以携带标志 两个分数相加、减法、乘法、除法-您希望这些是静态方法还是对象方法[分数相加(另一个分数)还是分数相加(另一个分数)]。这些方法返回什么-分数对象?花车 如何比较两个分数相等?如果您想在不破坏封装的情况下实现这一点,那么请确保提供一个equals方法——Java和C#为equals方法提供了一个特定的签名 考虑类的
- 创建它-这意味着一个构造函数。那么构造函数应该采用什么参数呢?2英寸?2个整数和一个布尔符号?ints也可以携带标志
- 两个分数相加、减法、乘法、除法-您希望这些是静态方法还是对象方法[分数相加(另一个分数)还是分数相加(另一个分数)]。这些方法返回什么-分数对象?花车
- 如何比较两个分数相等?如果您想在不破坏封装的情况下实现这一点,那么请确保提供一个equals方法——Java和C#为equals方法提供了一个特定的签名
- 创建它-这意味着一个构造函数。那么构造函数应该采用什么参数呢?2英寸?2个整数和一个布尔符号?ints也可以携带标志
- 两个分数相加、减法、乘法、除法-您希望这些是静态方法还是对象方法[分数相加(另一个分数)还是分数相加(另一个分数)]。这些方法返回什么-分数对象?花车
- 如何比较两个分数相等?如果您想在不破坏封装的情况下实现这一点,那么请确保提供一个equals方法——Java和C#为equals方法提供了一个特定的签名
- 考虑类的行为。您希望在此分数类上执行哪些操作
然后,这取决于您所使用的语言,您可能希望重载该类的一些运算符(C++),或者实现计算行为的方法,如Rohith所说。除非您使用无符号int,并且您确定不希望分母和分子包含符号,否则您可能应该去掉第三个成员(符号),因为它是多余的
然后,这取决于您使用的语言,您可能希望为此类(C++)重载一些运算符,或者实现方法来计算行为,如Rohith所说。考虑以下乘法问题: 2/3*3/4。答案是6/12,很天真。但是1/2,很聪明。在处理平等问题时,你需要考虑到这一点 那么,2000000000/3000000000*3/4呢?如果使用32位整数表示分子和分母,如果先进行简单计算,则会溢出。当然,如果您的语言支持bignums,这并不是什么大问题
当你降到最低的条件时,不要忘记考虑结果的符号——一般来说,当选择否定的有理数时,选择一个分子或分母为负数,并坚持它。
< P>考虑以下乘法问题: 2/3*3/4。答案是6/12,很天真。但是1/2,很聪明。在处理平等问题时,你需要考虑到这一点 那么,2000000000/3000000000*3/4呢?如果使用32位整数表示分子和分母,如果先进行简单计算,则会溢出。当然,如果您的语言支持bignums,这并不是什么大问题当你降到最低值时,别忘了考虑结果的符号——一般来说,决定在表示负的有理数时选择一个分子或分母是负的,并坚持它。
你也可能希望一个成员函数输出十进制值,还有一个toString函数,这样您就可以不费吹灰之力地打印分子/分母
这里也有一种“边界”情况——分母不能为零,或者您的值未定义。您的构造函数和任何设置程序都需要对这种可能性作出响应。您可能还需要一个成员函数来输出十进制值,以及一个toString函数,这样您就可以无需额外努力即可打印分子/分母
这里也有一种“边界”情况——分母不能为零,或者您的值未定义。你的构造函数和任何设置者都需要对这种可能性作出响应。 < P>第2章在Timothy Budd中有一个非常好的C++类。它包括这里提到的所有要点,包括将6/12标准化为1/2的GCD实现。值得一读。 < P>第2章Timothy Budd的C++中有一个非常好的有理类。它包括这里提到的所有要点,包括将6/12标准化为1/2的GCD实现。很值得一读。这取决于你到底在做什么。你想用这个类做什么?这个问题提醒我Ruby内置了Rational classIt,这取决于你到底在做什么。你想用这个类做什么?这个问题提醒我,露比有内置的Rational Cype你的第二个子弹,也考虑为+、-*和/或运算符提供重载。要支持MyStuts/2,请考虑具有整数类型的附加重载或隐式转换。若要支持int I=(int)(Frace/2),请考虑将显式转换为积分或浮点类型。RE第二颗子弹,还考虑为+、-*和/或运算符提供重载。要支持MyStuts/2,请考虑具有整数类型的附加重载或隐式转换。若要支持int I=(int)(Frace/ 2),请考虑将显式转换为积分或浮点类型。