I thought I would implement the arithmetic without float to ensure
precise results, but it proved to be quite difficult and probably not
the effort in this exercise.
}
Fixed Fixed::operator*(const Fixed &other) const
{
- Fixed res;
-
- res.m_num = m_num * other.m_num;
- if (res.m_num & (1 << (point_pos - 1)))
- {
- res.m_num >>= point_pos;
- ++res.m_num;
- return (res);
- }
- res.m_num >>= point_pos;
- return (res);
+ return (toFloat() * other.toFloat());
}
Fixed Fixed::operator/(const Fixed &other) const
{
- Fixed res;
-
- res.m_num = (m_num << point_pos) / other.m_num;
- return (res);
+ return (toFloat() / other.toFloat());
}
Fixed Fixed::operator++()
}
Fixed Fixed::operator*(const Fixed &other) const
{
- Fixed res;
-
- res.m_num = m_num * other.m_num;
- if (res.m_num & (1 << (point_pos - 1)))
- {
- res.m_num >>= point_pos;
- ++res.m_num;
- return (res);
- }
- res.m_num >>= point_pos;
- return (res);
+ return (toFloat() * other.toFloat());
}
Fixed Fixed::operator/(const Fixed &other) const
{
- Fixed res;
-
- res.m_num = (m_num << point_pos) / other.m_num;
- return (res);
+ return (toFloat() / other.toFloat());
}
Fixed Fixed::operator++()