<html><head><meta http-equiv="Content-Type" content="text/html charset=utf-8"></head><body style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space;" class=""><div class="">I’d be really interested in working on a Swift decimal number type. I’ve done some work on this for a Money type here:&nbsp;<a href="https://github.com/danthorpe/Money/tree/development/Money/Shared/Decimal" class="">https://github.com/danthorpe/Money/tree/development/Money/Shared/Decimal</a></div><div class=""><br class=""></div><div class="">I agree that it’s best to start with NSDecimal, and that approach 2 would offer the most flexibility.</div><div class=""><br class=""></div><div class="">I have a few other thoughts regarding the number behaviors.</div><div class=""><br class=""></div><div class="">NSDecimal’s functions accept rounding mode parameters and return NSCalculationError but NSDecimalNumber accepts NSDecimalNumberBehavior parameter and throws NSExceptions. I’m not really sure what the reason for this discrepancy is and should a new Swift NSDecimal use NSDecimalNumberBehavior, but maintain backwards compatibility with default behaviors and defined rounding mode?&nbsp;</div><div class=""><br class=""></div><div class="">Also, should a Swift NSDecimal continues with raising NSException, or adopt Swift style error handling? I don’t think we would want to introduce try/throw/catch semantics into the publicly exposed methods - but we could have an internal API layer which does. Backwards compatible functions would then have to convert between Swift ErrorType and NSException or NSCalculationError.</div><div class=""><br class=""></div><div class="">Cheers,</div><div class="">Dan</div><div class=""><br class=""></div><div class="">p.s. in the linked project, I made a DecimalNumberType protocol generic over the Behavior, which I’m not entire sure was a good decision or not.</div><div class=""><br class=""></div><br class=""><div><blockquote type="cite" class=""><div class="">On 11 Dec 2015, at 12:32, Florian Reinhart via swift-corelibs-dev &lt;<a href="mailto:swift-corelibs-dev@swift.org" class="">swift-corelibs-dev@swift.org</a>&gt; wrote:</div><br class="Apple-interchange-newline"><div class=""><meta http-equiv="Content-Type" content="text/html charset=utf-8" class=""><div style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space;" class="">Hi all,<div class=""><br class=""></div><div class="">Is someone already working on NSDecimal and/or NSDecimalNumber? If not I would like to help and have a few questions on how to best tackle this.</div><div class=""><br class=""></div><div class="">I think it’s best to start with NSDecimal and then use NSDecimal to create NSDecimalNumber. That’s why I want to concentrate on NSDecimal first. As far as I know there is no CF type we can utilize for NSDecimal and the existing interface is not Swift-like. I see two possible approaches here:</div><div class=""><ol class=""><li class="">We try to match the existing interface of NSDecimal as close as possible and only provide the same function interface with UnsafePointers all over the place</li><li class="">We create a Swift-like version of the NSDecimal struct. This struct stores its data in private properties and exposes methods (add, multiply, etc.) and computed properties (isNaN, etc.). Additionally, to achieve compatibility with the existing Foundation NSDecimal, we provide the same functions that take NSDecimal pointers and internally use the methods of the Swift struct.</li></ol></div><div class="">What do you think?</div><div class=""><br class=""></div><div class="">Unfortunately, I haven’t found a lot of documentation for NSDecimal, yet. Is there any documentation, which describes the NSDecimal functions?</div><div class=""><br class=""></div><div class="">—Florian</div>
<img src="https://u2002410.ct.sendgrid.net/wf/open?upn=ML52DPR1y1w-2Bk4-2By7XfCKhoC7Nczhry8PioYW20a-2Fk5wwYfaqOrGDNoe1K-2Fevtb7xGb9FXz2HY1XekzzVz3bYRTQHP67H8Zr-2Fg4mo6E0xx2cRzJZWj6Gf1Rw5Veb3S1JgdE1sdf1WqbhiIXBY0duI6ZAK6ApKgtZrUONjPc1KCT4F8mG4MwiZgZlzUMVl39UnaE4L4779En9Azlgx0WCYkB-2BeeuJe8X41kcfgBOOn84-3D" alt="" width="1" height="1" border="0" style="height:1px !important;width:1px !important;border-width:0 !important;margin-top:0 !important;margin-bottom:0 !important;margin-right:0 !important;margin-left:0 !important;padding-top:0 !important;padding-bottom:0 !important;padding-right:0 !important;padding-left:0 !important;" class="">
</div>
_______________________________________________<br class="">swift-corelibs-dev mailing list<br class=""><a href="mailto:swift-corelibs-dev@swift.org" class="">swift-corelibs-dev@swift.org</a><br class="">https://lists.swift.org/mailman/listinfo/swift-corelibs-dev<br class=""></div></blockquote></div><br class=""></body></html>