Хостинг серверов Minecraft playvds.com
  1. Вы находитесь в русском сообществе Bukkit. Мы - администраторы серверов Minecraft, разрабатываем собственные плагины и переводим на русский язык плагины наших собратьев из других стран.
    Скрыть объявление

Помогите Лишние нули в double

Тема в разделе "Разработка плагинов для новичков", создана пользователем Novichock, 23 июл 2016.

  1. Автор темы
    Novichock

    Novichock Активный участник Пользователь

    Баллы:
    76
    Skype:
    pavel.batalov1
    Считаю объём выделенной территории так:
    Код:
                    int width,length,height;
                    width=(sel.getMaximumPoint().getBlockX()-sel.getMinimumPoint().getBlockX()+1);
                    length=(sel.getMaximumPoint().getBlockZ()-sel.getMinimumPoint().getBlockZ()+1);
                    height=(sel.getMaximumPoint().getBlockY()-sel.getMinimumPoint().getBlockY()+1);
                    int amount = width*length*height;
    //объём выделенной региона равен 343
    Вывожу подобным образом(в "" свой текст)
    Код:
    p.sendMessage(amount*0.2+"") //выводит 68.60000000000001;
    Могут быть ошибки из-за этих нулей(точнее из-за единички в конце)?
    Можно ли как-то не выводить числа дальше 68.60 ?
     
  2. Хостинг MineCraft
    <
  3. gamerforEA

    gamerforEA Старожил Пользователь

    Баллы:
    143
    Skype:
    sk2000sk1
    Имя в Minecraft:
    gamerforEA_MCPC
    В Google в первой же ссылке было решение ("java округлить double").
    Код:
    p.sendMessage(String.format(Locale.US, "%.2f", amount * 0.2));
     
  4. Автор темы
    Novichock

    Novichock Активный участник Пользователь

    Баллы:
    76
    Skype:
    pavel.batalov1
    А на вычисления эти нули будут влиять?Что будет если в Essentials'e сниму игроку деньги,используя это значение?
     
  5. gamerforEA

    gamerforEA Старожил Пользователь

    Баллы:
    143
    Skype:
    sk2000sk1
    Имя в Minecraft:
    gamerforEA_MCPC
    Эти нули почти всегда есть, и пока никто от этого не умер. Если хотите высокую точность, то берите BigDecimal, но тут она вам не нужна.
     
  6. Автор темы
    Novichock

    Novichock Активный участник Пользователь

    Баллы:
    76
    Skype:
    pavel.batalov1
    Тогда будет 68,а мне нужно 68.60
     
  7. Derik

    Derik Активный участник Пользователь

    Баллы:
    76
    Имя в Minecraft:
    Derik
    (byte) берите а не (int).
     
  8. Rfg0

    Rfg0 Активный участник Пользователь

    Баллы:
    46
    Имя в Minecraft:
    Rfg0
    Хм... а float забыли??? И вообще byte относится к типу "целые числа"!
     
  9. alexandrage

    alexandrage Администратор

    Баллы:
    173
    Skype:
    alexandr0116
    Ваще не в тему.
     
  10. Rfg0

    Rfg0 Активный участник Пользователь

    Баллы:
    46
    Имя в Minecraft:
    Rfg0
    Ах ну да... забыл указать что это адресовано Derek'у[DOUBLEPOST=1469308746,1469308669][/DOUBLEPOST]Ещё есть у тебя комментарии к сообщению?
     
  11. alexandrage

    alexandrage Администратор

    Баллы:
    173
    Skype:
    alexandr0116
    Не, у меня нет других решений и двумя символами после точки.
     
  12. slavik123123123

    slavik123123123 Старожил Пользователь

    Баллы:
    143
    Имя в Minecraft:
    Leymooooooooooo
    Derik'y*
     
  13. alexandrage

    alexandrage Администратор

    Баллы:
    173
    Skype:
    alexandr0116
    Хотя Locale.US тас явно лишнее
    String.format("%.2f", amount*0.2);
     
  14. Rfg0

    Rfg0 Активный участник Пользователь

    Баллы:
    46
    Имя в Minecraft:
    Rfg0
    Спасибо за поправки!

    бесит derik, путаю с dereku...
     
  15. Reality_SC

    Reality_SC Старожил Пользователь

    Баллы:
    123
    Имя в Minecraft:
    Reality_SC
    Вместо умножения на вещественное число 0.2 вполне себе можно целочисленно поделить на 5; может всё-таки забить на ошибку в пределах 0.0-0.8?
    И да, всё-таки лучше использовать long amount = l * w * h.
     
  16. Автор темы
    Novichock

    Novichock Активный участник Пользователь

    Баллы:
    76
    Skype:
    pavel.batalov1
    Про long спасибо,но вместо 0.2 будет переменная,которую можно будет указать в конфиге.
     
  17. gamerforEA

    gamerforEA Старожил Пользователь

    Баллы:
    143
    Skype:
    sk2000sk1
    Имя в Minecraft:
    gamerforEA_MCPC
    Если не добавлять Locale, то вместо точки будет запятая (68,60).
     

Поделиться этой страницей