设计此对象时需要考虑的一些事项 这就是我能想到的全部
int nominator
int denominator
int sign
此对象可用于数学运算
答案 0 :(得分:2)
除非你使用unsigned int并且你确定你不希望分母和分子包含符号,否则你应该摆脱第三个成员(符号),因为它是多余的。
然后它取决于你正在使用的语言,你可能想要为这个类(C ++)重载一些运算符,或者实现计算行为的方法,比如Rohith说。
答案 1 :(得分:1)
考虑班级的行为。您希望在此分数类上执行哪些操作?
答案 2 :(得分:1)
考虑以下乘法问题:
2/3 * 3/4。答案是6/12,天真。但1/2,聪明。你需要考虑到这一点来处理平等问题。
现在,2000000000/3000000000 * 3/4怎么样?如果你使用32位整数来表示你的分子和分母,如果你先进行天真计算,你就会溢出。当然,如果你的语言支持bignums,这不是一个大问题。
当你减少到最低项时,不要忘记考虑结果的符号 - 通常,在表示负理性时,决定选择分子或分母中的一个为负数,并坚持使用它。
答案 3 :(得分:1)
您可能还需要一个成员函数来输出十进制值和一个toString函数,这样您就可以毫不费力地打印分子/分母。
这里也有一个“边界”的情况 - 分母不能为零或者你的值是不确定的。你的构造函数和任何setter都需要回应这种可能性。
答案 4 :(得分:1)
Timothy Budd的"Classic Data Structures In C++"第2章在C ++中有一个非常好的Rational类。它包括这里提出的所有要点,包括将6/12标准化为1/2的GCD的实现。非常值得一读。