Тема: Double - не точно додається
for(double zI = -0.6;zI <= 1.8;zI = zI+0.4)
При виведення zI він дорівнює -0.6,-0.1999999999996, 0.200000000007 і так далі як виправити це?
Ви не увійшли. Будь ласка, увійдіть або зареєструйтесь.
Ласкаво просимо вас на україномовний форум з програмування, веб-дизайну, SEO та всього пов'язаного з інтернетом та комп'ютерами.
Будемо вдячні, якщо ви поділитись посиланням на Replace.org.ua на інших ресурсах.
Для того щоб створювати теми та надсилати повідомлення вам потрібно Зареєструватись.
Український форум програмістів → Java → Double - не точно додається
Сторінки 1
Для відправлення відповіді ви повинні увійти або зареєструватися
for(double zI = -0.6;zI <= 1.8;zI = zI+0.4)
При виведення zI він дорівнює -0.6,-0.1999999999996, 0.200000000007 і так далі як виправити це?
Внутрішній формат float i double не дозволяє передавати точно деякі десяткові дроби. Щоб ця похибка не накопичувалась у процесі додавання, має сенс зробити лічильник циклу цілим числом, а потрібне дробове значення обчилювати на його основі:
for(int i=0; i<=4; i++)
{
double zI = -0.6 + 0.4*i;
...
}
Значення zI при цьому, ймовірно, все одно відхилятиметься від потрібного, але похибки попередніх ітерацій не впливатимуть на наступні.
Сторінки 1
Для відправлення відповіді ви повинні увійти або зареєструватися