我目前正在尝试将两个NSDecimal
数字相乘,这可能是 Swift 吗?
我在Apple Dev页面上找到了方法“decimalNumberByMultiplyingBy
”,但我使用了它,如下所示,我收到了“错误访问”错误。
购买价格和数量都是Item类中的NSDecimalNumbers
,并且绝对是填充的(购买价格为35.99,数量为30)
var one = item.purchasePrice
var two = item.quantity
let three: NSDecimalNumber = one.decimalNumberByMultiplyingBy(two)
我尝试了多种方法,但所有教程似乎都是针对Objective C。
感谢。
答案 0 :(得分:3)
完美无缺。
var numberOne: NSDecimalNumber = NSDecimalNumber(float: 35.99)
var numberTwo: NSDecimalNumber = NSDecimalNumber(int: 30)
let numberThree: NSDecimalNumber = numberOne.decimalNumberByMultiplyingBy(numberTwo)
print(numberThree)
控制台上的输出是:
1079.7000503540041728
注意:您的var的类型(three
)可能不为NSDecimalNumber
个实例,这就是您获得例外的原因。
答案 1 :(得分:1)
我不相信NSDecimalNumber类的完整性。只需看看以下代码:
在操场上输入以下内容:
strcpy_s(&store[spot].name, 20, name);
你得到: 35.99000167846681
var number1: NSDecimalNumber = NSDecimalNumber(float: 35.99)
你得到: 35.98999999999999
var number2: NSDecimalNumber = NSDecimalNumber(string: "35.99")
你得到: 3599
var number3: NSDecimalNumber = NSDecimalNumber(int: 3599)
你得到: 100
var number4: NSDecimalNumber = NSDecimalNumber(int: 100)
你得到: 35.98999999999999
仔细查看let number5: NSDecimalNumber = number3.decimalNumberByDividingBy(number4)
和number2
,如果这是真正的十进制类,它们应该具有精确的表示。
答案 2 :(得分:0)
对于Swift 5
var amount:Double = 1.66
var nsValue: NSDecimalNumber = NSDecimalNumber(string: String(amount))
var nsValue1: NSDecimalNumber = NSDecimalNumber(string: "1.22")
var nsValue3: NSDecimalNumber = nsValue.multiplying(by: nsValue1)
print(nsValue3)
输出
2.0252
我知道现在回答还为时已晚,但有人可能会觉得有帮助。