усечение плавающего значения Java - PullRequest
1 голос
/ 10 ноября 2009

я хочу, чтобы значение с плавающей запятой составляло 3 цифры после цифры, я не хочу округлять значение например: поплавок f = 2,13275; я хочу f как 2.132, а не 2.133, как я могу сделать это в Java?

Ответы [ 5 ]

1 голос
/ 10 ноября 2009

Не будет (int) (f * 1000) /1000.0 работать? Это кажется мне более понятным, чем другие предложения.

1 голос
/ 10 ноября 2009

Math.floor () отрубит что-либо после десятичной точки без округления. Вы можете разыграть трюк, в котором вы умножаете на соответствующий порядок, складываете результат, а затем делите на тот же порядок. Как это:

double f = 2.13275;
double f2 = Math.floor(f * 1000) / 1000;

Примечание: класс Math имеет дело с двойными, а не с плавающей точкой. Если вы действительно хотите плавать, вы можете выполнить кастинг, но с некоторой потерей точности. С другой стороны, вам нужно только 3 знака после запятой, так что вы, вероятно, не будете возражать.

Редактировать: @Jason S указывает, что отрицательные числа могут изменить свое последнее десятичное число. Я не уверен, хотите ли вы этого или это даже уместно в контексте вашего кода. Но если это так, есть несколько способов обойти это. Одним из них является использование Math.ceil () для случая отрицательного числа:

double f2 = (f < 0 ? Math.ceil(f * 1000) : Math.floor(f * 1000)) / 1000;

Да, я знаю, это становится немного грязно. Но это иллюстрирует суть.

1 голос
/ 10 ноября 2009

Используйте класс DecimalFormat .

0 голосов
/ 31 декабря 2013

Как уже упоминалось ранее, вы можете использовать DecimalFOrmat

DecimalFormat df= new DecimalFormat("##.###"); //##.### указывает желаемый формат

String temp=df.format(var_name);
0 голосов
/ 10 ноября 2009

Использовать десятичный формат с setRoundingMode (RoundingMode.FLOOR)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...