пару вещей. Во-первых, вы имеете в виду «точность», а не «точность». Во-вторых, вам нужно уточнить , почему вы хотите сделать это, потому что от него будет зависеть правильный ответ.
Если все, что вы хотите сделать, это отображение чисел с этой точностью, это проблема форматирования. Вы можете использовать, например. System.out.printf("%.4f", value)
или String.format()
.
Если вы пытаетесь, чтобы генерировать чисел с той точностью, можно аппроксимировать делать что-то вроде (округление опущены для простоты):
double value = (int)(generateor.nextDouble() * 10000.0)/10000.0;
Или, если вы хотите, чтобы ваш диапазон быть 0- 10000 вместо 0-1:
double value = (int)(generateor.nextDouble() * 100000000.0)/10000.0;
из-за способа чисел с плавающей запятой сохраняются, что не будет точным, но, возможно, это достаточно близко для ваших целей. Если вам нужна точная, вы хотели бы сохранить в виде целых чисел, например:
int value = (int)(generator.nextDouble() * 10000.0);
Тогда вы можете работать на том, что внутри, и дисплей как:
System.out.printf("%.4f", value/10000.0);
Adjust коэффициент умножения выше, если вы имеете в виду вы хотите ваш диапазон будет 0-10000.
Если вы просто пытаетесь сгенерировать число в [0, 10000), вы можете использовать Random.nextInt(int)
с указанным диапазоном или просто передать значение int
, как указано выше (необязательно округление).
Что вы подразумеваете под «точностью» случайного числа? Что вы хотите в качестве вывода? –
4 цифры после десятичной метки. – jsh6303
Тогда это проблема форматирования. –