1. zhorzh78 Пользователь

    Регистрация:
    24.08.15
    Сообщения:
    156
    Симпатии:
    53
    Пол:
    Мужской
    Имеется проблема с математической операций и скоро понадобится операция хирургическая) Голова пухнет..
    Прошу помощи у зрячих) Где накосячил, не пойму
    Итак
    PHP:
    new Float:g_iWallet[MAX_PLAYERS+1]

    public 
    player_killed(victimkiller)
    {
        if(
    Get_Status(g_iStatusvictim))
        {
            
    server_print("шилингов %d: %.2f руб."victimg_iWallet[victim])
            
    g_iWallet[victim] -= 0.01
            server_print
    ("шилингов %d: %.2f руб."victimg_iWallet[victim])
        }
           
        if(
    Get_Status(g_iStatuskiller))
        {
            
    server_print("шилингов %d: %.2f руб."killerg_iWallet[killer])
            
    g_iWallet[killer] += 0.01
            server_print
    ("шилингов %d: %.2f руб."killerg_iWallet[killer])
        }

        
    set_user_shilings(victimg_iWallet[victim])
        
    set_user_shilings(killerg_iWallet[killer])   
    А теперь, внимательно:)
    Код:
    Первый раунд:
    шилингов 2: 12.34 руб. - начальный баланс игрока 2
    шилингов 2: 12.32 руб. - после первой смерти теряет 0.02, вместо 0.01
    шилингов 1: 120.00 руб. - начальный баланс игрока 1
    шилингов 1: 120.01 руб. - тут все нормально
    
    Второй раунд: - тут все нормально
    шилингов 2: 12.32 руб.
    шилингов 2: 12.31 руб. - после второй смерти теряет, как положено
    шилингов 1: 120.01 руб.
    шилингов 1: 120.02 руб.
    
    Третий раунд - тут все нормально
    шилингов 1: 120.02 руб.
    шилингов 1: 120.01 руб.
    шилингов 2: 12.31 руб.
    шилингов 2: 12.32 руб.
    
    Четвертый раунд
    шилингов 1: 120.01 руб.
    шилингов 1: 120.00 руб.
    шилингов 2: 12.32 руб.
    шилингов 2: 12.34 руб. после убийства получил 0.02)) т.е. вернул свое
    
    И далее- уже в обратном порядке..
    шилингов 1: 120.00 руб.
    шилингов 1: 119.98 руб.
    шилингов 2: 12.34 руб.
    шилингов 2: 12.35 руб.
     
    michellmello нравится это.
  2. windranger1337 Пользователь

    Регистрация:
    04.10.15
    Сообщения:
    303
    Симпатии:
    177
    Telegram:
    serfreeman1337
    zhorzh78 нравится это.
  3. neygomon Его Темнейшество :j Команда форума

    Регистрация:
    26.02.15
    Сообщения:
    7.600
    Симпатии:
    4.173
    Пол:
    Мужской
    я один не понял в чем косяк?)
     
  4. zhorzh78 Пользователь

    Регистрация:
    24.08.15
    Сообщения:
    156
    Симпатии:
    53
    Пол:
    Мужской
    Чтобы я без тебя делал))
    А на amx-x сказали, плохой заголовок и тему закрыли))
    Косяк в АМХ)
     
  5. neygomon Его Темнейшество :j Команда форума

    Регистрация:
    26.02.15
    Сообщения:
    7.600
    Симпатии:
    4.173
    Пол:
    Мужской
    zhorzh78, ну опиши в чем проблема то?
     
  6. zhorzh78 Пользователь

    Регистрация:
    24.08.15
    Сообщения:
    156
    Симпатии:
    53
    Пол:
    Мужской
    Сложно объяснить) По-разному ведет себя
    Например:
    При вычитании 0.01 вы читал 0.010003 и округлял до ближайшего четного
    В результате, 12.34 - 0.01 = 12.329997 =>12.32
    Как-то так.. хотя, не в точности. Уже забыл, как было).. Крч, сделал на вычитание: -= 0.009997.. Хоть не совсем правильно, но для моих потребностей- достаточно
     
    michellmello нравится это.