currentRatio
を小数点以下2桁に切り上げるにはどうすればよいですか?
let currentRatio = Double (rxCurrentTextField.text!)! / Double (txCurrentTextField.text!)!
railRatioLabelField.text! = "\(currentRatio)"
書式文字列を使用して、小数点以下2桁に切り上げ、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桁に切り上げたい場合は、100で乗算し、四捨五入してから100で除算する必要があります。
var x = 1.5657676754
var y = (x*100).rounded()/100
print(y) // 1.57
Doubleを複数回フォーマットする場合、上記の回答に追加して、以下のようにDoubleのプロトコル拡張を使用できます。
extension Double {
var dollarString:String {
return String(format: "$%.2f", self)
}
}
let a = 45.666
print(a.dollarString) //will print "$45.67"
この目的で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
(Swift 4.2 Xcode 10)拡張機能の使用が簡単:-
extension Double {
func roundTo(places:Int) -> Double {
let divisor = pow(10.0, Double(places))
return (self * divisor).rounded() / divisor
}
}
使用:-
if let distanceDb = Double(strDistance) {
cell.lblDistance.text = "\(distanceDb.roundTo(places:2)) km"
}
小数点以下の特定の数字のコードは次のとおりです。
var roundedString = String(format: "%.2f", currentRatio)
ここで、%。2fはSwiftに、この数値を小数点以下2桁に丸めるよう指示します。
String(format: "%.2f", Double(round(1000*34.578)/1000))
出力:34.58
ほんの1行のコード:
let obj = self.arrayResult[indexPath.row]
let str = String(format: "%.2f", arguments: [Double((obj.mainWeight)!)!])
234.545332233を与えると234.54を与える
let textData = Double(myTextField.text!)!
let text = String(format: "%.2f", arguments: [textData])
mylabel.text = text