자바에서 소수점 2자리 플로트를 인쇄하려면 어떻게 해야 하나요?
같이 할 수 있나요?System.out.print
?
다음과 같은 방법을 사용할 수 있습니다.
System.out.printf("%.2f", val);
요약하면,%.2f
구문은 Java에 변수를 반환하도록 지시합니다(val
소수점 이하 2자리 ( ).2
부동소수점수의 10진수 표현( )f
포맷 지정자 선두부터 ( ).%
).
이 외에도 사용할 수 있는 변환 문자가 있습니다.f
:
d
: 10진수 정수o
: 8진수 정수e
: 과학적 표기법에서의 부동 소수점
를 사용할 수 있습니다.한 가지 사용 방법:
DecimalFormat df = new DecimalFormat();
df.setMaximumFractionDigits(2);
System.out.println(df.format(decimalNumber));
또 다른 하나는 이 시스템을 구축하기 위해#.##
포맷합니다.
모든 포맷 옵션이 포맷 메서드를 호출하는 것보다 읽기 쉽지는 않지만 이는 선호도의 문제입니다.
String 사용을 권장합니다.값이 필요한 경우 format()로 지정합니다.String
당신의 코드로.
예를 들어,String.format()
다음과 같은 방법으로 합니다.
float myFloat = 2.001f;
String formattedString = String.format("%.02f", myFloat);
double d = 1.234567;
DecimalFormat df = new DecimalFormat("#.##");
System.out.print(df.format(d));
float f = 102.236569f;
DecimalFormat decimalFormat = new DecimalFormat("#.##");
float twoDigitsF = Float.valueOf(decimalFormat.format(f)); // output is 102.24
마지막에 자동으로 변경된 아래의 빠른 코드를 사용할 수 있습니다.점 뒤에 참조하는 0의 수를 추가합니다.
float y1 = 0.123456789;
DecimalFormat df = new DecimalFormat("#.00");
y1 = Float.valueOf(df.format(y1));
변수 y1은 이전에 0.123456789와 같았습니다.코드 뒤에는 0.12만 됩니다.
float floatValue=22.34555f;
System.out.print(String.format("%.2f", floatValue));
출력은 22.35 입니다.소수점 3이 필요한 경우 "%3f"로 변경합니다.
많은 사람들이 언급해 왔다.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;
이 '싸구려 속임수'는 언제나 나에게 충분했고, 어떤 언어에서도 통했다(나는 자바 사람이 아니라 단지 그것을 배우고 있을 뿐이다).
Decimal Format 보기
다음은 튜토리얼의 예입니다.
DecimalFormat myFormatter = new DecimalFormat(pattern);
String output = myFormatter.format(value);
System.out.println(value + " " + pattern + " " + output);
'###'과 같은 패턴을 선택하면##"은 소수점 이하 두 자리입니다.이 값은 반올림이라고 생각합니다.링크를 참조하여 원하는 정확한 형식(예: 후행 0)을 얻을 수 있습니다.
다음은 Java에서 소수점 2자리 부동 데이터의 출력을 표시하는 코드입니다.
float ratingValue = 52.98929821f;
DecimalFormat decimalFormat = new DecimalFormat("#.##");
float twoDigitsFR = Float.valueOf(decimalFormat.format(ratingValue)); // output is 52.98
Java에서 소수점 2자리까지 플로트를 인쇄하려면:
float f = (float)11/3;
System.out.print(String.format("%.2f",f));
출력: 3.67
> 소수점 이하 3자리까지 %.3f를 사용합니다.
OK - 뜨기 위해 스트링합니다.
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)
한 시간 이상 날 괴롭혔던 한 가지 이슈는DecimalFormat
- 이중 입력과 부동 입력을 다르게 처리합니다.Rounding Mode 변경도 도움이 되지 않았습니다.나는 전문가는 아니지만 나 같은 사람에게 도움이 될 수 있다고 생각했다.결국 사용되었습니다.Math.round
참조해 주세요.아래를 참조해 주세요.
DecimalFormat df = new DecimalFormat("#.##");
double d = 0.7750;
System.out.println(" Double 0.7750 -> " +Double.valueOf(df.format(d)));
float f = 0.7750f;
System.out.println(" Float 0.7750f -> "+Float.valueOf(df.format(f)));
// change the RoundingMode
df.setRoundingMode(RoundingMode.HALF_UP);
System.out.println(" Rounding Up Double 0.7750 -> " +Double.valueOf(df.format(d)));
System.out.println(" Rounding Up Float 0.7750f -> " +Float.valueOf(df.format(f)));
출력:
Double 0.7750 -> 0.78
Float 0.7750f -> 0.77
Rounding Up Double 0.7750 -> 0.78
Rounding Up Float 0.7750f -> 0.77
간단한 데모 프로그램:
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);
이것을 시험해 보세요:-
private static String getDecimalFormat(double value) {
String getValue = String.valueOf(value).split("[.]")[1];
if (getValue.length() == 1) {
return String.valueOf(value).split("[.]")[0] +
"."+ getValue.substring(0, 1) +
String.format("%0"+1+"d", 0);
} else {
return String.valueOf(value).split("[.]")[0]
+"." + getValue.substring(0, 2);
}
}
언급URL : https://stackoverflow.com/questions/2538787/how-to-print-a-float-with-2-decimal-places-in-java
'source' 카테고리의 다른 글
반복기와 반복기의 차이점과 사용법은 무엇입니까? (0) | 2022.07.30 |
---|---|
C는 과부하를 지원합니까? (0) | 2022.07.30 |
스택은 위쪽으로 증가합니까, 아니면 아래로 증가합니까? (0) | 2022.07.30 |
플랫폼에 의존하지 않는 size_t 형식 지정자(c) (0) | 2022.07.30 |
Eclipse에서 Javadoc 의견을 생성하려면 어떻게 해야 합니까? (0) | 2022.07.30 |