12 ответов:
можно использовать
printfметод, например, так:System.out.printf("%.2f", val);короче,
%.2fсинтаксис говорит Java, чтобы вернуть переменную (val) С 2 десятичными знаками (.2) в десятичном представлении числа с плавающей запятой (f) от начала спецификатора формата (%).есть и другие символы преобразования, которые вы можете использовать помимо
f:
d: десятичное целое числоo: восьмеричное целое числоe: плавающая точка в научной нотации
можно использовать
DecimalFormat. Один из способов его использования:DecimalFormat df = new DecimalFormat(); df.setMaximumFractionDigits(2); System.out.println(df.format(decimalNumber));еще один-построить его с помощью .
Я нахожу все параметры форматирования менее читаемыми, чем вызов методов форматирования, но это вопрос предпочтения.
Я бы предложил использовать строку.формат() если вам нужно значение как
Stringв коде.например, вы можете использовать
String.format()следующим образом:float myFloat = 2.001f; String formattedString = String.format("%.02f", myFloat);
float f = 102.236569f; DecimalFormat decimalFormat = new DecimalFormat("#.##"); float twoDigitsF = Float.valueOf(decimalFormat.format(f)); // output is 102.24
многие люди упомянули
DecimalFormat. Но вы также можете использоватьprintfЕсли у вас есть последняя версия Java:System.out.printf("%1.2f", 3.14159D);дополнительную информацию о строке формата printf смотрите в документах на модуле форматирования.
простой трюк состоит в том, чтобы создать более короткую версию вашей переменной, умножив ее, например,
100, округляя его и деля на100.0снова. Таким образом, вы создаете переменную, с 2 десятичных знака:double new_variable = Math.round(old_variable*100) / 100.0;этот "дешевый трюк" всегда был достаточно хорош для меня и работает на любом языке (я не человек Java, просто изучаю его).
посмотреть DecimalFormat
вот пример из учебника:
DecimalFormat myFormatter = new DecimalFormat(pattern); String output = myFormatter.format(value); System.out.println(value + " " + pattern + " " + output);Если вы выберете шаблон "###.## ", вы получите два десятичных знака, и я думаю, что значения округляются. Вы хотите посмотреть на ссылку, чтобы получить точный формат, который вы хотите (например, хотите ли вы конечные нули)
float floatValue=22.34555f; System.out.print(String.format("%.2f", floatValue));выход 22.35. Если вам нужно 3 десятичных знака, измените его на"%.3f".
OK-str, чтобы плавать.
package test; import java.text.DecimalFormat; public class TestPtz { public static void main(String[] args) { String preset0 = "0.09,0.20,0.09,0.07"; String[] thisto = preset0.split(","); float a = (Float.valueOf(thisto[0])).floatValue(); System.out.println("[Original]: " + a); a = (float) (a + 0.01); // Part 1 - for display / debug System.out.printf("[Local]: %.2f \n", a); // Part 2 - when value requires to be send as it is DecimalFormat df = new DecimalFormat(); df.setMinimumFractionDigits(2); df.setMaximumFractionDigits(2); System.out.println("[Remote]: " + df.format(a)); } }выход:
run: [Original]: 0.09 [Local]: 0.10 [Remote]: 0.10 BUILD SUCCESSFUL (total time: 0 seconds)
небольшая простая программа для демонстрации:
import java.io.*; import java.util.Scanner; public class twovalues { public static void main(String args[]) { float a,b; Scanner sc=new Scanner(System.in); System.out.println("Enter Values For Calculation"); a=sc.nextFloat(); b=sc.nextFloat(); float c=a/b; System.out.printf("%.2f",c); } }
просто делать
String str = System.out.printf("%.2f", val).replace(",", ".");Если вы хотите убедиться, что независимо от локали пользователя, вы всегда будете получать / отображать"."как десятичный разделитель. Это необходимо, если вы не хотите, чтобы сделать вашу программу аварии, если вы позже сделать какой-то преобразования, какfloat f = Float.parseFloat(str);
Comments