1. Этот сайт использует файлы cookie. Продолжая пользоваться данным сайтом, Вы соглашаетесь на использование нами Ваших файлов cookie. Узнать больше.
  2. Вы находитесь в сообществе Rubukkit. Мы - администраторы серверов Minecraft, разрабатываем собственные плагины и переводим на различные языки плагины наших коллег из других стран.
    Скрыть объявление
Скрыть объявление
В преддверии глобального обновления, мы проводим исследования, которые помогут нам сделать опыт пользования форумом ещё удобнее. Помогите нам, примите участие!

Помогите Как округлить double ДО .5?

Тема в разделе "Разработка плагинов для новичков", создана пользователем pro100koder, 13 сен 2018.

Статус темы:
Закрыта.
  1. Автор темы
    pro100koder

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

    Баллы:
    76
    Как округлить double именно до 0.5, 1.5 и т. д.? То есть, допустим, у нас есть число 3.8932, на выходе будет 4. Есть число 4,5678, на выходе будет 4,5. Нужно, чтобы не спамило в консоли, мол, нельзя ставить жизни моба там... 6.58987435456, нужно именно 6.5. При чём, самое интересное: жаловаться-то жалуется, спамит ошибками, а мобам жизни выставляет)
     
  2. Автор темы
    pro100koder

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

    Баллы:
    76
    Если что, жалуется на строчку z.setHealth(health);
    Код:
    double health = z.getHealth();
                health = health+health*(wave/10.0);
                z.setHealth(health);
    z - zombie.
     
  3. LuckyZeeRo

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

    Баллы:
    96
    Имя в Minecraft:
    i0xHeX
    Код:
    double num = 1.56755;
    num = Double.parseDouble(String.format(Locale.US, "%.1f", num));
    > num = 1.6

    P.S. Locale.US поставил, потому что некоторые форматы имеют на выходе запятую вместо точки, через это parseDouble выкинет ошибку.
     
  4. LuckyZeeRo

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

    Баллы:
    96
    Имя в Minecraft:
    i0xHeX
    Это дает нам ровно ничего. Любую ошибку нужно выкладывать.
     
  5. SaMEC

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

    Баллы:
    173
    Skype:
    support.meedway
    Имя в Minecraft:
    Nick
    Второй вариант решения:
    Код:
    String formattedDouble = new DecimalFormat("#0.0").format(0.1321231);
    
     
  6. Автор темы
    pro100koder

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

    Баллы:
    76
    Нужно именно на Пять округлять, либо я не понимаю, как работает setHealth(). За чем ошибку? Чтобы узнать, на какую строчку жалуется? Ладно, вот ошибочка...
    Код:
    Caused by: java.lang.IllegalArgumentException: Health must be between 0 and 20.0(28.0)
        at org.bukkit.craftbukkit.v1_12_R1.entity.CraftLivingEntity.setHealth(CraftLivingEntity.java:101) ~[spigot.jar:git-Spigot-596221b-9a1fc1e]
        at tfshop.click.onSpawn(click.java:100) ~[?:?]
        at sun.reflect.GeneratedMethodAccessor52.invoke(Unknown Source) ~[?:?]
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) ~[?:1.8.0_172]
        at java.lang.reflect.Method.invoke(Unknown Source) ~[?:1.8.0_172]
        at org.bukkit.plugin.java.JavaPluginLoader$1.execute(JavaPluginLoader.java:302) ~[spigot.jar:git-Spigot-596221b-9a1fc1e]
    *Пока копался в логах, чтобы её найти, сам понял, что БОЖЕ! Число должно быть меньше 20? А ничего, что у зомби я выставил maxHealth 1000? (выставлял через команду... Может быть, решение - выставлять через плагин? Во время сета жизней, перед сетом самих жизней ставить maxHealth? Сейчас попробую, поможет - закрою тему.)
     
  7. Автор темы
    pro100koder

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

    Баллы:
    76
    Нет. Не помогло.
    Код:
    z.getAttribute(Attribute.GENERIC_MAX_HEALTH).setBaseValue(health);
                z.setHealth(health);
    *Та же ошибка.
     
  8. HunterGaming

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

    Баллы:
    96
    Имя в Minecraft:
    sqdFendy
    Если что, нужно в настройках спигота в файле spigot.yml либо bukkit.yml выставить максимальное кол-во хп...
     
  9. AbstractCoder

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

    Баллы:
    76
    Имя в Minecraft:
    AbstractCoder
    Ну вы кнч сверхразумы через строку округлять...
     
  10. alexandrage

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

    Баллы:
    173
    Нате без строк.
    BigDecimal.valueOf(d).setScale(1,BigDecimal.ROUND_HALF_DOWN).doubleValue()
     
Статус темы:
Закрыта.

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