2015-01-13 3 views
1

내 핵심 데이터 앱에서 3 개의 UITexField에서 3 개의 부동 소수점 숫자를 저장합니다. 그렇게하기 위해 저는 그것들을 문자열로 변환해야했습니다.TextField에서 2 자리 소수점이있는 FloatValue

이제는 값이 반올림되어 .0이되는 것입니다.

어떻게해야합니까?

nyTankning.liter = (textFieldLiter.text as NSString).floatValue 
nyTankning.kronor = (textFieldKronor.text as NSString).floatValue 
nyTankning.literpris = (textFieldLiterpris.text as NSString).floatValue 
+0

문제의 원인을 설명해 주시겠습니까? .를 원하지 않으면 int로 변환하십시오. –

+0

값이 저장되면 예. 3,14를 입력하면 3.0으로 반올림됩니다. 나는 여전히 그것이 2 소수 십일수가되고 싶다 –

+0

가능한 중복 [정밀 문자열 형식 지정자에서 스위프트] (http://stackoverflow.com/questions/24051314/precision-string-format-specifier-in-swift) –

답변

2

귀하의 문제를 대신 마침표 ","쉼표를 사용하려고하는 것이있다 "."

extension String { 
    var converted: String { 
     return fractionDigits() 
    } 
    var toDouble: Double { 
     return NSNumberFormatter().numberFromString(self)!.doubleValue 
    } 
    var toFloat: Float { 
     return NSNumberFormatter().numberFromString(self)!.floatValue 
    } 
    func fractionDigits(min:Int = 2, max:Int = 2)-> String { 
     let styler = NSNumberFormatter() 
     styler.minimumFractionDigits = min 
     styler.maximumFractionDigits = max 
     let converter = NSNumberFormatter() 
     converter.decimalSeparator = "." 
     if let result = converter.numberFromString(self) { 
      return styler.stringFromNumber(result)! 
     } else { 
      converter.decimalSeparator = "," 
      if let result = converter.numberFromString(self) { 
       return styler.stringFromNumber(result)! 
      } 
     } 
     return "" 
    } 
} 
"1,1222".converted   // "1.12" 
"2".converted    // "2.00" 

"1,1222".converted.toDouble // 1.12 
"2".converted.toDouble  // 2.0 

"1,1222".converted.toFloat // 1.12000000476837 
"2".converted.toFloat  // 2.0 

"1.1222".converted   // "1.12" 
"1.1222".converted.toDouble // 1.12 
"1.254".converted.toFloat // 1.25 

"1.254".fractionDigits(min: 1, max: 2) // "1.25" 
"1.2".fractionDigits(min: 1, max: 2) // "1.2" 
+0

아하 그래서 문제는 십진법 키패드입니까? –

+1

문제는 decimalSeparator를 지정해야한다는 것입니다. 기본 decimalSeparator는 마침표이며 숫자가 아닌 첫 번째 문자 다음의 모든 것을 무시합니다. –

+0

Simulato에서는 작동하지만 내 iPhone에서는 작동하지 않습니다. 베타 버그 일 수 있습니까 (iOS 8.2 베타 4)? –

0

사용할 수있는 NSString(format: "%.02f", nyTanking.liter)

+0

어디에서 코드를 입력해야합니까? –

관련 문제