Swift에서 자국어 로캘에 적합한 숫자를 생성하면서 십진수 (12.000) 뒤에 후행 0을 유지하는 NSNumberFormatter
을 어떻게 만들 수 있습니까?NSNumberFormatter를 사용하여 십진수 뒤에 후행 숫자가있는 숫자 생성
내 현재 코드 예 출력 :
let formatter = NSNumberFormatter()
formatter.numberStyle = .DecimalStyle
formatter.locale = NSLocale.currentLocale()
formatter.maximumFractionDigits = 10
var doubleNumString = "12.0"
println(formatter.numberFromString(doubleNumString)) //in English it prints 12, want it to print 12.0
var doubleNumString = "12.000"
println(formatter.numberFromString(doubleNumString)) //prints 12, want it to print 12.000
var doubleNumString = "12.125"
println(formatter.numberFromString(doubleNumString)) //prints 12.125 as expected
var doubleNumString = "1234"
println(formatter.numberFromString(doubleNumString)) //prints 1,234 as expected
은 이미 코딩 한 그와 같은 문자열이 소수 ("12."
)에서 끝나는 경우 다음 숫자를 생성하기 위해이 포맷을 사용하지 않습니다 것 그 대신 십진수를 표시하십시오 (그러나 일부 언어는 오른쪽에서 왼쪽으로 읽으므로이를 향상시켜야합니다).
한 가지 해결책은 문자열에 마침표가 포함되어 있는지 확인하고 그 뒤에 오는 숫자가 모두 0인지 확인한 다음 숫자 서식 지정 프로그램을 통해 실행하고 대신 int 값만 실행하는 것입니다 포맷터를 통해 10 진수 다음에 적절한 수의 0을 추가/앞에 추가하십시오.
더 나은/더 좋은 솔루션이 있습니까?
A * 번호 동일 패스. * 숫자로 변환 된 "12.0"과 "12.000"은 똑같은 결과를 나타내며 숫자로 구별 할 방법이 없습니다. 왜 그냥 문자열 자체를 사용할 수 없습니까? –
@Martin 문자열은 항상 영어 형식이므로 출력 번호는 현재 로캘을 고려해야하며 문자열에있는 경우 후행 0도 유지해야하기 때문입니다. – Joey
그러면 string-> number-> string을 변환 할 수 있지만 후행 0의 수를 세고 두 번째 변환의 minimum + maximumFractionDigits로 설정해야합니다. 아마도 도움이 될 것입니다. 시도해 볼 시간이없고 현재 답변을 작성하십시오. –