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方法提供了一个特定的签名

      除非您使用无符号int并且确定不希望分母和分子包含符号,否则您可能应该去掉第三个成员(符号),因为它是多余的


      然后,这取决于您所使用的语言,您可能希望重载该类的一些运算符(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),请考虑将显式转换为积分或浮点类型。