programing

소수점 이하 2자리까지 두 배로 반올림

telecom 2023. 10. 17. 20:02
반응형

소수점 이하 2자리까지 두 배로 반올림

반올림하는 방법currentRatio소수점 두 자리까지?

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

형식 문자열을 사용하여 소수점 이하 두 자리까지 반올림하고 변환합니다.double에 이르기까지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"

마지막 소수점 자리를 반올림하려면 다음과 같은 작업을 수행할 수 있습니다(Phone1xUK 감사).

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 

번호 사용 고려이러한 목적을 위해 비율의 백분율 기호를 인쇄하거나 통화 및 큰 숫자와 같은 것이 있으면 보다 유연성을 제공합니다.

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"

저 같은 초보자들을 위한 간단한 후속 답변입니다.

출력이 있는 함수를 사용하면 다른 답을 매우 쉽게 구현할 수 있습니다.예.

  func twoDecimals(number: Float) -> String{
    return String(format: "%.2f", number)
}

이런 식으로 소수점 2자리까지 값을 잡고 싶을 때마다 입력합니다.

소수점 두 개('여기 당신의 번호')

...

심플!

P.s. String 변환 후 다시 변환하여 Float 값이나 원하는 모든 값을 다음과 같이 반환할 수도 있습니다.

 func twoDecimals(number: Float) -> Float{
    let stringValue = String(format: "%.2f", number)
    return Float(stringValue)!
}

도움이 되길 바랍니다.

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

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

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

@둥근, A swift 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

또한:

// Specify the decimal place to round to using an enum
public enum RoundingPrecision {
    case ones
    case tenths
    case hundredths
    case thousands
}

extension Double {
    // Round to the specific decimal place
    func customRound(_ rule: FloatingPointRoundingRule, precision: RoundingPrecision = .ones) -> Double {
        switch precision {
        case .ones: return (self * Double(1)).rounded(rule) / 1
        case .tenths: return (self * Double(10)).rounded(rule) / 10
        case .hundredths: return (self * Double(100)).rounded(rule) / 100
        case .thousands: return (self * Double(1000)).rounded(rule) / 1000
        }
    }
}

let value: Double = 98.163846
print(value.customRound(.toNearestOrEven, precision: .ones)) //98.0
print(value.customRound(.toNearestOrEven, precision: .tenths)) //98.2
print(value.customRound(.toNearestOrEven, precision: .hundredths)) //98.16
print(value.customRound(.toNearestOrEven, precision: .thousands)) //98.164

소수점을 유지하고 잘라내지 않고 둥근 모양을 만듭니다.

지정된 반올림 규칙도 자세한 내용은 을 참조하십시오.

String(format: "%.2f", Double(round(1000*34.578)/1000))

출력 : 34.58

이것을 시도해보세요. 0.0보다 더 좋은 결과를 얻을 수 있을 것입니다.

extension Double {
    func rounded(toPlaces places:Int) -> Double {
        let divisor = pow(10.0, Double(places))
        return (self * divisor).rounded() / divisor
    }
    func toRoundedString(toPlaces places:Int) -> String {
        let amount = self.rounded(toPlaces: places)
        let str_mount = String(amount)
        
        let sub_amountStrings = str_mount.split(separator: ".")
        
        if sub_amountStrings.count == 1
        {
          var re_str = "\(sub_amountStrings[0])."
            for _ in 0..<places
            {
                re_str += "0"
            }
            return re_str
         
        }
        else if sub_amountStrings.count > 1, "\(sub_amountStrings[1])".count < places
        {
            var re_str = "\(sub_amountStrings[0]).\(sub_amountStrings[1])"
            let tem_places = (places -  "\(sub_amountStrings[1])".count)
              for _ in 0..<tem_places
              {
                  re_str += "0"
              }
            return re_str
        }
        
        return str_mount
    }
}

234.545332233을 주시면 234.54를 드립니다.

let textData = Double(myTextField.text!)!
let text = String(format: "%.2f", arguments: [textData])
mylabel.text = text

한 줄의 코드:

 let obj = self.arrayResult[indexPath.row]
 let str = String(format: "%.2f", arguments: [Double((obj.mainWeight)!)!])

언급URL : https://stackoverflow.com/questions/34929932/round-up-double-to-2-decimal-places

반응형