Итак, у меня есть эта функция, в которой я извлек свою дробную часть данного int, чтобы я мог вывести ее в шестнадцатеричной форме.
Вот мой код, где результат - дробная часть который я затем печатаю в шестнадцатеричной форме.
// getting fraction part
result = 0;
int count = 0;
for (int which_digit = 23; which_digit >0; which_digit--) {
shifted_value = f >> (23 - count);
int fractionn = (shifted_value & 1) * (1 << which_digit) ;
result += fractionn;
count++;
}
Если мне задано число 8, моя программа правильно печатает шестнадцатеричную форму дробной части. Однако, учитывая другое число, например -0.749000013, моя программа печатает 0x3fbe76 вместо 0x3fbe77.
Кто-нибудь знает, где я ошибся