Swiftの文字列操作を使って小数点以下の処理を実装してみました。
モード切り替えがあり、モードを覚えていないといけないので、シングルトンで実装しています。
こんな感じでしょうか。このコードはまだテストしていないので、ただしく動くかわかりませんが、こんな感じで書けそうです。
class CUT54UP: NSObject{
var mode: String
static let sharedCUT54UP: CUT54UP = CUT54UP()
private override init(){
mode = "CUT"
}
func change(_ input: String) -> String {
if input.contains(".") {
switch mode {
case "CUT":
let text = String(input[input.startIndex ..< input.firstIndex(of:".")!])
return text
case "5/4":
var text = String(input[input.startIndex ..< input.firstIndex(of:".")!])
let afterTheDecimalPoint = String(input[input.firstIndex(of:".")! ... input.endIndex])
let decimalPoint = String(afterTheDecimalPoint.prefix(1))
if Decimal(string: decimalPoint)! >= 5 {
let retVal = Decimal(string: text)! + Decimal(integerLiteral: 1)
text = NSDecimalNumber(decimal: retVal).stringValue
}
return text
case "UP":
var text = String(input[input.startIndex ..< input.firstIndex(of:".")!])
let afterTheDecimalPoint = String(input[input.firstIndex(of:".")! ... input.endIndex])
let decimalPoint = String(afterTheDecimalPoint.prefix(1))
if Decimal(string: decimalPoint)! > 0 {
let retVal = Decimal(string: text)! + Decimal(integerLiteral: 1)
text = NSDecimalNumber(decimal: retVal).stringValue
}
return text
default:
return input
}
}
else{
return input
}
}
}
モード切り替えがあり、モードを覚えていないといけないので、シングルトンで実装しています。
こんな感じでしょうか。このコードはまだテストしていないので、ただしく動くかわかりませんが、こんな感じで書けそうです。
0 件のコメント:
コメントを投稿