1

Тема: Double - не точно додається

for(double zI = -0.6;zI <= 1.8;zI = zI+0.4)

При виведення zI він дорівнює -0.6,-0.1999999999996, 0.200000000007 і так далі як виправити це?

2

Re: Double - не точно додається

Внутрішній формат float i double не дозволяє передавати точно деякі десяткові дроби. Щоб ця похибка не накопичувалась у процесі додавання, має сенс зробити лічильник циклу цілим числом, а потрібне дробове значення обчилювати на його основі:

for(int i=0; i<=4; i++)
    {
    double zI = -0.6 + 0.4*i;
    ...
    }

Значення zI при цьому, ймовірно, все одно відхилятиметься від потрібного, але похибки попередніх ітерацій не впливатимуть на наступні.

Подякували: Iakol1