[英]decimal 0 precision
我有一個場景,我必須使用雙倍值。 我的目標是,如果有人輸入37.5,那么我必須顯示37.5,如果有人輸入37.0,那么我需要顯示37.0,如果有人專門輸入37,那么我只需要顯示37,而不是37.0,現在的問題是我正在使用雙重數據用於存儲這些值的類型。 默認情況下,double將37轉換為37.0。 如果我截斷了小數部分,則我的情況之一失敗了,如果有人輸入37.0,那么我確實需要顯示37.0
有人可以建議實現上述目標的最佳方法是什么?
有點古怪,但可以為您提供一些想法:
struct DoubleWithPrecision: CustomStringConvertible {
let value: Double
private let decimals: Int
var description: String { return String(format: "%1.\(decimals)f", value) }
init?(_ string: String) {
guard let convertedValue = Double(string) else { return nil }
value = convertedValue
if let decimalPoint = string.characters.indexOf(".") {
decimals = string.characters.count - string.startIndex.distanceTo(decimalPoint) - 1
} else {
decimals = 0
}
}
}
let foo = DoubleWithPrecision("42")!
let bar = DoubleWithPrecision("42.0")!
print(foo) // 42
print(bar) // 42.0
存儲用戶輸入的NSString
並僅在需要顯示結果時(不截斷)應用邏輯
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.