как сделать Math.random вокруг числа

1

Я делаю игру типа лотереи и использую Math.random() для чисел. Я хочу, чтобы он всегда распечатывал номер, который вы получили по отношению к 0 - 100 (так что если Math.random вывел 0.03454, а число для победы было ниже 0,05, оно установило бы текст метки на 5). Как бы вы сделали это до всего 0,00? Вот некоторые из кода, если вы хотите увидеть, что я имею в виду.

public void lotterymath()
{
    double x = Math.random();
    System.out.println(x);

    if (x <= 0.02)
        output.setText("you win  " + x);
    else
        output.setText( "you lost  " + x);
}

У меня также есть кнопка ниже, которая вызывает lotterymath() кстати :)

  • 0
    Обратите внимание, что double не может хранить 0,01, но он может хранить 0,01000000000000000020816681711721685132943093776702880859375 (фактическое значение; я не просто помял свои цифровые клавиши, чтобы получить это). Таким образом, нет способа округлить double точностью до 0,01 и сохранить результат как double .
Теги:
random

5 ответов

0
Лучший ответ

Изменение: неправильно прочитать исходное сообщение:

Вы захотите умножить на 100, а затем наложить на int чтобы усечь его, или вместо Math.round:

System.out.println(Math.round(x*100)); // rounds up or down

или

System.out.println((int) (x*100));

Оригинал:

Используйте String.format(String, Object...):

System.out.println(String.format("%.2f", x));

%.2f является строкой формата.

1

Ты пробовал

Math.round(x)

Оформить эту ссылку для документации: http://docs.oracle.com/javase/7/docs/api/java/lang/Math.html#round(double)

EDIT: Возможно, я не мог полностью понять ваш вопрос, но я думаю, что если вы используете

Math.round(Math.random*100)

Вы получите число от 0 до 100.

0

правильный:

int var = (int)Math.round(Math.random()*100)

НЕПРАВИЛЬНО:

int var = Math.round(Math.random()*100)

вам нужно уменьшить значение до целого числа, прежде чем присваивать ему целочисленную переменную, чтобы не получить ошибку, подобную этой: ошибка: несовместимые типы: возможное преобразование с потерями из long в int

        int var = Math.round( Math.random() * 3);
                            ^
0

Я предпочитаю использовать BigDecimal при работе с числами с плавающей запятой

BigDecimal myRounded = new BigDeicmal(Math.random()).setScale(2, BigDecimal.ROUND_HALF_UP);
0

Поскольку Math.random() возвращает double между 0.0 и 1.0, вы можете просто умножить результат на 100. Таким образом, 0.0 * 100 = 0, 1.0 * 100 = 100, и все между ними всегда будет между 0 и 100.

Используйте Math.round(), чтобы получить полный целочисленный номер. Поэтому, если случайное число равно 0.03454, умноженное на 100 = 3.454. Закрой его, чтобы получить 3.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню