Decimal.toDouble
toDouble with exactness tracking: sets INEXACT/ROUNDED when the value differs from its 17-significant-digit form (the shortest form guaranteed to round-trip a double), and OVERFLOW/INEXACT when the magnitude exceeds the double range (result is a double infinity). This is exact for every value expressible within 17 digits and conservative for values whose exact double expansion is longer (documented).
double toDouble() const @safe pureDecimal to double via text (the runtime parser's rounding; exactness of the binary side is not tracked — a documented, status-free bridge). Specials map to their double forms.