소수점 이하 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
'programing' 카테고리의 다른 글
Oracle 11g에서 여러 데이터베이스를 생성하고 액세스하려면 어떻게 해야 합니까? (0) | 2023.10.22 |
---|---|
Dynamically populate an ACF field (radio) on a multisite install (0) | 2023.10.17 |
기본 키를 한 테이블에 여러 개 넣을 수 있습니까? (0) | 2023.10.17 |
SQL Server Reporting Services의 Oracle Date 형식 예외 (0) | 2023.10.17 |
워드프레스가 있는 웹팩 개발 서버 (0) | 2023.10.17 |