2014-10-28 3 views
0

현재 NSDecimal 두 개를 곱하려고 시도했습니다. 스위프트에 가능한가요?스위프트 - 두 개의 NSDecimal 숫자 곱하기

Apple Dev 페이지에서 'decimalNumberByMultiplyingBy'메서드를 발견했지만 아래에서 사용한대로 '잘못된 액세스'오류가 발생합니다.

구매 가격과 수량 Item 클래스에서 모두 NSDecimalNumbers하고 나는 그것을 여러 가지 방법을 시도했지만 모든 자습서 것 같다

var one = item.purchasePrice 
var two = item.quantity 

let three: NSDecimalNumber = one.decimalNumberByMultiplyingBy(two) 

확실히 (구매 35.99의 가격과 30의 수량) 채워집니다 목표 C를 위해서.

고마워.

+2

무엇이'3'입니까? – Teejay

답변

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

미안해하지 않았다는 것을 알려 주셔서 감사합니다! 'item.quantity'의 변수 유형을 변경했기 때문에 예외가 발생했다.그러나 Core Data - DUH는 업데이트하지 않았습니다. 모든 유형이 올바른지 확인하도록 상기시켜 주셔서 감사합니다. @ 홀렉스 – user3405877

1

NSDecimalNumber 클래스의 무결성을 신뢰할 수 없습니다. 당신이 얻을

var number1: NSDecimalNumber = NSDecimalNumber(float: 35.99)

: 35.99000167846681

var number2: NSDecimalNumber = NSDecimalNumber(string: "35.99")

를 당신이 얻을 : 35.98999999999999

하여 놀이터에서 다음

유형 : 그냥 다음 코드를 보면,363,210

var number3: NSDecimalNumber = NSDecimalNumber(int: 3599)

당신이 얻을 : 3599

var number4: NSDecimalNumber = NSDecimalNumber(int: 100)

는 당신이 얻을 : 100

let number5: NSDecimalNumber = number3.decimalNumberByDividingBy(number4)

는 당신이 얻을 : 35.98999999999999

number2number5을 자세히 살펴보십시오. 이것이 실제 Decimal 클래스 인 경우 정확한 표현이 있어야합니다.

+0

정말요? 방금 놀이터에서 체크인 했어. print (number1)는 전혀 문제가되지 않습니다. 인쇄하기 전에 이중으로 변환하고 있습니까? – Yerke