Swift - 将两个NSDecimal数相乘

时间:2014-10-28 16:57:09

标签: swift multiplication nsdecimalnumber

我目前正在尝试将两个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。

感谢。

3 个答案:

答案 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

我知道现在回答还为时已晚,但有人可能会觉得有帮助。