>

소수점 하나의 거리를 표시하고 있는데, 0과 같은 경우이 소수를 제거하고 싶습니다 (예 : 1200.0Km). 어떻게 신속하게 처리 할 수 ​​있습니까? 이 번호를 다음과 같이 표시합니다 :

let distanceFloat: Float = (currentUser.distance! as NSString).floatValue
distanceLabel.text = String(format: "%.1f", distanceFloat) + "Km"


  • 답변 # 1

    Swift 3/4 :

    var distanceFloat1: Float = 5.0
    var distanceFloat2: Float = 5.540
    var distanceFloat3: Float = 5.03
    extension Float {
        var clean: String {
           return self.truncatingRemainder(dividingBy: 1) == 0 ? String(format: "%.0f", self) : String(self)
        }
    }
    print("Value \(distanceFloat1.clean)") // 5
    print("Value \(distanceFloat2.clean)") // 5.54
    print("Value \(distanceFloat3.clean)") // 5.03
    
    

    스위프트 2 (원래 답변)

    let distanceFloat: Float = (currentUser.distance! as NSString).floatValue
    distanceLabel.text = String(format: distanceFloat == floor(distanceFloat) ? “%.0f" : "%.1f", distanceFloat) + "Km"
    
    

    확장 프로그램으로 :

    extension Float {
        var clean: String {
            return self % 1 == 0 ? String(format: "%.0f", self) : String(self)
        }
    }
    
    

  • 답변 # 2

    NSNumberFormatter 사용 :

    let formatter = NumberFormatter()
    formatter.minimumFractionDigits = 0
    formatter.maximumFractionDigits = 2
    // Avoid not getting a zero on numbers lower than 1
    // Eg: .5, .67, etc...
    formatter.numberStyle = .decimal
    let nums = [3.0, 5.1, 7.21, 9.311, 600.0, 0.5677, 0.6988]
    for num in nums {
        print(formatter.string(from: num as NSNumber) ?? "n/a")
    }
    
    

    반품 :

    3

    5.1

    7.21

    9.31

    600

    0.57

    0.7

  • 답변 # 3

    extension  그것을 수행하는 강력한 방법입니다.

    확장:

    Swift 2 용 코드 (Swift 3 이상은 아님) :

    extension Float {
        var cleanValue: String {
            return self % 1 == 0 ? String(format: "%.0f", self) : String(self)
        }
    }
    
    

    사용법:

    var sampleValue: Float = 3.234
    print(sampleValue.cleanValue)
    
    
    와이즈 비즈

    3.234

    와이즈 비즈
    sampleValue = 3.0
    print(sampleValue.cleanValue)
    
    
    와이즈 비즈


    샘플 놀이터 파일은 여기에 있습니다.

  • 답변 # 4

    swift 3에 대한 허용 된 답변 업데이트:

    3

    사용법 :

    sampleValue = 3
    print(sampleValue.cleanValue)
    
    

  • 답변 # 5

    이전에 언급 한 확장 프로그램을 사용할 수 있습니다.이 솔루션은 조금 더 짧습니다 :

    3

    사용 예 :

    extension Float
    {
        var cleanValue: String
        {
            return self.truncatingRemainder(dividingBy: 1) == 0 ? String(format: "%.0f", self) : String(self)
        }
    }
    
    
    let someValue: Float = 3.0 print(someValue.cleanValue) //prints 3

  • 이전 mysql - Processmaker 트리거 입력 문서는 현재 업로드 된 파일 경로를 얻습니다
  • 다음 Java로 게임 패드 입력을 얻으려면 어떻게해야합니까? (윈도우 10)