Я обнаружил странное поведение в написанном мной фрагменте кода, которого не происходит, когда я пытаюсь воспроизвести его вне программы (т.е. с помощью MATLAB).
Я делаю операцию над массивом следующим образом:
a[i] = a[i] / (sqrt(b[i]) * sqrt(c[i]));
где a
, b
и c
— массивы типа float. Значения a
, b
и c
предыдущего деления находятся в диапазоне от 2000
до 6000000
.
Результат операции равен нулю для всех элементов массива, но если смотреть на значения числителя и знаменателя отдельно, то для данного элемента операция 89509.0 / 90240,375
что равно 0,991895258
.
Итак, мне интересно, почему полная работа внутри программы с использованием float не работает, а отдельно работает как положено. Вероятно, из-за часов запутанной отладки?
a
?float[]
? - person slugonamission   schedule 09.10.2012a[i]
,b[i]
иc[i]
до деления? Запускали ли вы свою программу с помощью отладчика? - person David Hammen   schedule 09.10.2012a
,b
,c
— это массивы с плавающей запятой. - person pQB   schedule 10.10.2012