2017-12-02 16 views
-1

NSDecimalNumber의 인덱스에서 번호를 찾을 수 있습니까?NSDecimalNumber의 인덱스에서 숫자 찾기

예를 들어 이렇게 할 수 있나요?

var a: NSDecimalNumber = 10.0
var indexOfa = a(index: 6) 
//indexOfa = 6 (6th position from the left) 

나는 기본적으로 x.xx5에 내림과 x.xx6에 올림 사용자 정의 라운딩 기능을 만들기 위해 노력하고있어.

예 : 67.5558은 67.55로 반올림됩니다. 67.5568은 67.56으로 반올림됩니다.

... 반올림 질문이 중복되지 않았습니다. 여기서 NSDecimalNumber의 지정된 인덱스에서 숫자를 찾는 방법을 구체적으로 묻습니다.

또한 대답은 내 질문에 대한 답변이 아닙니다. NSDecimalNumber에 대해서는 반올림 동작을 사용할 수 있지만 .5에서는 반올림 동작을 사용할 수 있습니다 .5 .6에서 .6까지 반올림해야합니다. 두 번째 십진수의 인덱스를 찾을 수 있으면 내 자신의 사용자 정의 반올림 함수를 만들 수 있습니다.

나는 해결책이있다. 하지만 그 끔찍한. 거기에 NSDecimalNumber 확장이 몇 개 있지만 아마 그들이하는 일을 짐작할 수 있습니다. 그리고 나는 확실히 프로그래머는

public func currencyRoundDown() -> NSDecimalNumber { 
    let rounded: NSDecimalNumber 
    let toThree = self.roundDown(3) 
    let lower = self.roundDown(2).adding(0.005) 
    if lower.moreThan(toThree) || lower.same(toThree) { 
     rounded = toThree.roundDown(2) 
    } else { 
     rounded = toThree.roundUp(2) 
    } 
    return rounded 
} 
+0

는이 질문 제발 봐 -> https://stackoverflow.com/questions/41744278/count-number-of-decimal-places-in-a-float-or-decimal -in-swift –

+0

@LateNate는 질문을 중복하지 않습니다. 질문 한 방식에 문제가있는 경우 _edit_하십시오. – matt

+0

귀하의 질문에 답변하지 않는다는 것에 동의하지 않습니다. https://stackoverflow.com/questions/27338573/rounding-a-double-value-to-x-number-of-decimal-places-in-swift에 대한 답변을 생각해 보면 답변이 _is_ 거기에 있음을 알 수 있습니다. . 요점은 당신의 질문이 혼합에 아무 것도 추가하지 않는다는 것입니다. 당신은 검색 (그리고 생각)만으로 이것을 이해할 수있었습니다. – matt

답변

0

그것이 NSDecimalNumber의 인덱스 번호를 찾을 수 있나요 ... 더 좋은 방법이야?

Double을 사용하는 방법을 생각해 봅시다. 이 렌더링에서 "인덱스"는 소수점에서 계산됩니다.

색인에 10을 곱하면 색인 자리가 1 자리로 표시됩니다. 이제 나머지를 10을 기준으로 취하십시오. 이것이 문제의 숫자입니다.

let d = 1234.56789 // the 5 is 1, the 6 is 2, the 7 is 3 ... 
    let place = 3 
    let shift = pow(10.0, Double(place)) * d 
    let digit = Int(shift) % 10 // 7 
당신은 그것을 통해 연구 할 수