Java: For double Precision 값을 설정하는 방법?

난 내가 갖고 있는 상황에서 최근 일하던 숫자로 값을 설정할 수 있는 6 개 숫자 또는 precisiontm 연산뿐 말하도다 값에 따라 4 자리 데이터베이스에 저장된.

예를 들어, 다음 데이터베이스에 따라 4 자리, precision 설정되었습니다 출력물에는 것처럼 보이게 한다.

'10.0000'.

. # ',' 와 함께 '찾았다' 데키말포르마 문자열을 사용하여 기호를 사용하여 everytime 귀찮게 할 일이다.

더 나은 외곽진입 말하도다 유지됩니까 같은 항목을 참조).

Double value = 10.0;
value.setPrecision(4);
질문에 대한 의견 (3)

비히데키멀 이 목적을 위해 할 수 있습니다.

Double toBeTruncated = new Double("3.5789055");

Double truncatedDouble = BigDecimal.valueOf(toBeTruncated)
    .setScale(3, RoundingMode.HALF_UP)
    .doubleValue();
해설 (5)

이런 방식으로 쉽게 할 수 있다.

String formato = String.format("%.2f");

2 자리 precisiontm 설정됩니다.

이런 식으로, 인쇄하려면 경우에만 사용한다.

System.out.printf("%.2f",123.234);
해설 (2)
해결책

39, t 설정되었습니다 너회가 can& 정밀도가 지정된 소수점 숫자, 두 번 (또는 더블) 부동 소수점 값에서 소수점 숫자 때문에 don& # 39, 없다. 그들은 이진 자리.

변환할지 합니다 ',' 또는 '에 따라 소수 기수 상에서' 비히데키멀 데키말포르마 그리웠댔지 가치를 함께 할 수 있다.

참조 [이 질문] 내 질문에 대한 답변을 반박하는 (https://stackoverflow.com/questions/153724/how-to-round-a-number-to-n-decimal-places-in-java/12684082 # 12684082) 의 *100/100 피할 수 없다.

해설 (0)

For double precision 데키말포르마 값을 설정할 수 있다 '' 좋은 기술이다. 예를 들어 '와' 제바스티스트러스데키말포르마 임포트합니다 it to use this 클래스 객체 생성

double no=12.786;
DecimalFormat dec = new DecimalFormat("#0.00");
System.out.println(dec.format(no));

그래서 여기 또 12.79 인쇄하십시오 소수점 두 자릿수 인쇄하십시오 후 방침이다.

해설 (3)

이 협력했습니다 가져다줄래요:

public static void main(String[] s) {
        Double d = Math.PI;
        d = Double.parseDouble(String.format("%.3f", d));  // can be required precision
        System.out.println(d);
    }
해설 (0)

39 의 구현을 통해 효율적인 방법으로 here& 결과 2 이다.

  1. 39, & # 39 를 제한값 precisiontm maximum&. 숫자 n (N 으로 치료되지 않은 자리).

  2. 발 아래로 번호 (반올림되지 에 가까운).

여기에 테스트 케이스 샘플 참조).

123.12345678 ==> 123.123
1.230000 ==> 1.23
1.1 ==> 1.1
1 ==> 1.0
0.000 ==> 0.0
0.00 ==> 0.0
0.4 ==> 0.4
0 ==> 0.0
1.4999 ==> 1.499
1.4995 ==> 1.499
1.4994 ==> 1.499

39 의 here& 코드. 위에서 언급한 바와 같이 두 시, 그러나 더 이상 속도를 내게 아주 쉽게 해결할 수 있습니다, 그래서 여기에 놓고갔네 정밀도에는 중요.

문자열 조작 '계산' 이 같은 시스템지우트리프린스프 (,, &quot %.2f&quot 123.234), 비용이 많이 드는 데 비해 수학적 연산을. 내 아래 테스트 코드를 문자열 조작 1/30th (이사우스 없이) 에 비해 시간이 걸렸다.

public double limitPrecision(String dblAsString, int maxDigitsAfterDecimal) {
    int multiplier = (int) Math.pow(10, maxDigitsAfterDecimal);
    double truncated = (double) ((long) ((Double.parseDouble(dblAsString)) * multiplier)) / multiplier;
    System.out.println(dblAsString + " ==> " + truncated);
    return truncated;
}
해설 (0)

정밀도가 '더블' 와 '' 방식에 의해 고정되어 그 크기와 부동 IEEE 부동소수점 유형은상위 가 모색하십시오.

반면, 이 소수점 숫자를 출력물에는 서식 문제가 있다. 틀렸다니까 교정합니다 입력하는 동일한 상수입니다 운명인것 안 좋은 생각이에요. 너희가운데 문자열으로 상수입니다 대신 기호식 표현 및 사용 합니다.

private static final String DBL_FMT = "##.####";

기호식 표현 사용 없이도 사용할 수 있게 될 것 "이라며" 이 모든 위치에서 precisiontm 변경하십시오 검색: 상수 () 는 사용자의 코드를 통한.

해설 (0)
BigDecimal value = new BigDecimal(10.0000);
value.setScale(4);
해설 (0)

39, & # 39 에 대한 확장하십시오 @EJP 总监和首席信息官完全了解 precision&;; 복식 다룰 때 매우 엉뚱한. # 39 (https://stackoverflow.com/a/3730040/390153) 에서 설명한 것처럼 너회가 can& 0.1 로 표현할 수도, t, t # 39, 같은 이유로 연산뿐 precisiontm 상관없이 can& 1/3 기준 10 으로 유한 precisiontm 표현할 수 있습니다.

중인 문제를 해결하려는 및 고려해보십시오 고려해야 합니다.

a) 의 복식 1 위 사용해야 할까요. 복식 관련 개념을 사용하여 잘 될 수 있으면 정밀도는 관심용 실수.

복식 적합한 경우, b) 가 무슨 뜻이냐고 precisiontm? 이 논리는 대해서만 언급하고 있는 경우, 랩 표시하십시오 진실이며당신이 디스플레이 기능을 하는 한 곳에, 이를 처리할 계획이다. ie. 적용하십시오 건조한 것이다.

해설 (0)
public static String setPrecision(String number, int decimal) {
    double nbr = Double.valueOf(number);
    int integer_Part = (int) nbr;
    double float_Part = nbr - integer_Part;
    int floating_point = (int) (Math.pow(10, decimal) * float_Part);
    String final_nbr = String.valueOf(integer_Part) + "." + String.valueOf(floating_point);
    return final_nbr;
}
해설 (1)

아마 이 방법을 묻는 보호하리요 프레시싱 연산뿐 값.

double truncate(double number)
    {
        int integerPart = (int) number;
        double fractionalPart = number - integerPart;
        fractionalPart *= 100;  //It is for upto two decimal values after point.
                                //You can increase the zeros to fulfill your needs.
        int fractPart = (int) fractionalPart;
        fractionalPart = (double) (integerPart) + (double) (fractPart)/100;
        return fractionalPart;
    }

이 방법을 사용하면 정밀도 수준을 설정할 수 있습니다.

double truncate(double number, int precision)
{
    double prec = Math.pow(10, precision);
    int integerPart = (int) number;
    double fractionalPart = number - integerPart;
    fractionalPart *= prec;
    int fractPart = (int) fractionalPart;
    fractionalPart = (double) (integerPart) + (double) (fractPart)/prec;
    return fractionalPart;
}
해설 (0)