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;
Да, я знаю, это становится немного грязно. Но это иллюстрирует суть.