ฉันจะปัดเศษcurrentRatio
ทศนิยมสองตำแหน่งได้อย่างไร
let currentRatio = Double (rxCurrentTextField.text!)! / Double (txCurrentTextField.text!)!
railRatioLabelField.text! = "\(currentRatio)"
ฉันจะปัดเศษ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"
หากคุณต้องการปัดเศษทศนิยมสุดท้ายของคุณคุณสามารถทำสิ่งนี้ได้ (ขอบคุณ 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"
}
func round(to places: Int) -> Double {
อัปเดตเป็น 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 หลาย ๆ ครั้งเราสามารถใช้ protocol extension ของ 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 , a swift 5.1 property wrapper ตัวอย่าง:
struct GameResult {
@Rounded(rule: NSDecimalNumber.RoundingMode.up,scale: 4)
var score: Decimal
}
var result = GameResult()
result.score = 3.14159265358979
print(result.score) // 3.1416
String(format: "%.2f", Double(round(1000*34.578)/1000))
เอาท์พุต: 34.58
เพียงคำตอบสั้น ๆ สำหรับ noobs เช่นฉัน:
คุณสามารถทำให้คำตอบอื่น ๆ ซุปเปอร์ implementable ได้อย่างง่ายดายโดยใช้ฟังก์ชั่นที่มีเอาท์พุท เช่น
func twoDecimals(number: Float) -> String{
return String(format: "%.2f", number)
}
ด้วยวิธีนี้ทุกครั้งที่คุณต้องการรับค่าเป็นทศนิยม 2 ตำแหน่งคุณก็พิมพ์
twoDecimals (' หมายเลขของคุณที่นี่ ')
...
ซิมเปิ้ล!
Ps คุณยังสามารถทำให้มันส่งคืนค่าFloatหรืออะไรก็ได้ที่คุณต้องการโดยการแปลงอีกครั้งหลังจากการแปลง String ดังนี้:
func twoDecimals(number: Float) -> Float{
let stringValue = String(format: "%.2f", number)
return Float(stringValue)!
}
หวังว่าจะช่วยได้
ถ้าคุณให้ 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)!)!])
currentRatio
เป็นทศนิยมสองตำแหน่งหรือปัดเศษขึ้นเสมอ? เช่นคุณต้องการ 3.141 -> 3.14 หรือ 3.141 -> 3.14?