[swift] 소수점 2 자리까지 두 배 반올림

currentRatio소수점 이하 두 자리 까지 반올림하려면 어떻게합니까 ?

let currentRatio = Double (rxCurrentTextField.text!)! / Double (txCurrentTextField.text!)!
railRatioLabelField.text! = "\(currentRatio)"



답변

형식 문자열을 사용하여 소수점 이하 두 자리까지 반올림하고 double를 a 로 변환합니다 String.

let currentRatio = Double (rxCurrentTextField.text!)! / Double (txCurrentTextField.text!)!
railRatioLabelField.text! = String(format: "%.2f", currentRatio)

예:

let myDouble = 3.141
let doubleStr = String(format: "%.2f", myDouble) // "3.14"

마지막 소수점 자리를 반올림하려면 다음과 같이 할 수 있습니다 (Phoen1xUK에게 감사드립니다).

let myDouble = 3.141
let doubleStr = String(format: "%.2f", ceil(myDouble*100)/100) // "3.15"


답변

(Swift 4.2 Xcode 11)
사용이 간편한 확장 기능 :-

extension Double {
    func round(to places: Int) -> Double {
        let divisor = pow(10.0, Double(places))
        return (self * divisor).rounded() / divisor
    }
}

사용하다:-

if let distanceDb = Double(strDistance) {
   cell.lblDistance.text = "\(distanceDb.round(to:2)) km"
}


답변

SWIFT 4 및 질문에 대한 올바른 답변으로 업데이트되었습니다.

소수점 2 자리까지 반올림하려면 100을 곱한 다음 반올림 한 다음 100으로 나눕니다.

var x = 1.5657676754
var y = (x*100).rounded()/100
print(y)  // 1.57 


답변

이 목적으로 NumberFormatter를 사용하는 것이 좋습니다. 비율의 백분율 기호를 인쇄하려는 경우 또는 통화 및 큰 숫자와 같은 항목이있는 경우 더 많은 유연성을 제공합니다.

let amount = 10.000001
let formatter = NumberFormatter()
formatter.numberStyle = .decimal
formatter.maximumFractionDigits = 2
let formattedAmount = formatter.string(from: amount as NSNumber)!
print(formattedAmount) // 10


답변

Double을 여러 번 포맷하려면 위의 답변에 추가하면 아래와 같이 Double의 프로토콜 확장을 사용할 수 있습니다.

extension Double {
    var dollarString:String {
        return String(format: "$%.2f", self)
    }
}

let a = 45.666

print(a.dollarString) //will print "$45.67"


답변

소수점 이하 특정 숫자의 코드는 다음과 같습니다.

var roundedString = String(format: "%.2f", currentRatio)

여기서 % .2f는이 숫자를 소수점 이하 2 자리로 반올림하도록 신속하게 알려줍니다.


답변

@Rounded , 신속한 5.1 속성 래퍼 예 :

struct GameResult {
    @Rounded(rule: NSDecimalNumber.RoundingMode.up,scale: 4)
    var score: Decimal
}

var result = GameResult()
result.score = 3.14159265358979
print(result.score) // 3.1416