고정 너비 테이블에 부동 소수점 숫자를 표시할 때 유효 자릿수 보존에 대한 우려가 발생합니다. 표준 fmt.Printf 함수는 이 측면에 대해 제한된 제어를 제공합니다.
이 문제를 해결하기 위해 최적의 유효 자릿수를 결정하는 사용자 정의 서식 기능을 구현할 수 있습니다. 지정된 너비에 맞춥니다. 여기에는 문제의 숫자를 분석하고 과학적 표기법과 그에 따른 정규 형식 중에서 선택하는 작업이 포함됩니다. 규모.
구현:
// format12 formats x to be 12 chars long. func format12(x float64) string { if x >= 1e12 { // For scientific notation, determine the width of the exponent. s := fmt.Sprintf("%.g", x) format := fmt.Sprintf("%%12.%dg", 12-len(s)) return fmt.Sprintf(format, x) } // For regular form, determine the width of the fraction. s := fmt.Sprintf("%.0f", x) if len(s) == 12 { return s } format := fmt.Sprintf("%%%d.%df", len(s), 12-len(s)-1) return fmt.Sprintf(format, x) }
테스트:
fs := []float64{0, 1234.567890123, 0.1234567890123, 123456789012.0, 1234567890123.0, 9.405090880450127e+9, 9.405090880450127e+19, 9.405090880450127e+119} for _, f := range fs { fmt.Println(format12(f)) }
출력:
0.0000000000 0.1234567890 1234.5678901 123456789012 1.234568e+12 9405090880.5 9.405091e+19 9.40509e+119
위 내용은 Go에서 Float64를 최대 유효 자릿수를 갖는 고정 너비 문자열로 변환하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!