Reprezentacja liczby ulamkowej.

0

Witam

bool find_negative_cycle(VNode** list,float* d,int n){
    for(int j=0;j<n;j++){
        VNode *CV = list[j];
        VNode *CN = CV->next;
        while(CN != NULL){
            if(d[CN->V] > d[CV->V]+CN->E)
                return true;
            CN = CN->next;
        }
    }
    return false;
}

Dla (d[CN->V] > d[CV->V]+CN->E)liczb 0.600000 > 0.260000 + 0.3400000 daje true. Jak temu zaradzic?

3

Albo dajesz Epsiłon albo reprezentujesz wartości:

  • w centylach: 60>26+34
  • w promilach: 600>260+340
1

@_13th_Dragon dał podpowiedź jak temu zaradzić (nie używać liczb zmiennoprzecinkowych), a dlaczego się tak dzieje? Po prostu "Taki jest urok tych liczb"

1 użytkowników online, w tym zalogowanych: 0, gości: 1