Ich habe ein paar Doubles, die ich in NSDecimalNumber portieren möchte, weil ich mit ihnen Gleitkomma-Arithmetikfehler bekomme.Wie portiere ich diese Doppel in eine NSDecimalNumber?
Sie sind:
double one = 0.0000001;
double two = 1000000000.0000001;
Sie sind sehr problematisch, aber ich hoffe, dass NSDecimalNumber helfen können Berechnungen richtig zu machen. Ich bin nicht so ein großes Mathe-Genie, also frage ich mich, wie ich die richtige Eingabe für diese Methode von NSDecimalNumber bereitstellen kann.
Lassen Sie mich versuchen:
NSDecimalNumber *one = [NSDecimalNumber decimalNumberWithMantissa:1 exponent:-7 isNegative:NO];
NSDecimalNumber *two = [NSDecimalNumber decimalNumberWithMantissa:10000000000000001 exponent:-7 isNegative:NO];
Ich fühle, dass falsch ist. Ich konnte nur raten. Die Dokumentation bietet dazu nicht viele Informationen. Aber soweit ich es verstehe, ist die "Mantisse" eine ganze Zahl und der Exponent gibt an, wo der Fließkommawert sein sollte, indem er Nullen hinzufügt. Wahrscheinlich ist das auch falsch ;-)
Ich habe ein paar Codeschnipsel gesehen, wo Leute nur einen CGFloat als Mantisse gefüttert haben und eine 0 als Exponent geliefert haben, aber ich kann nur raten, was ihre Absicht war, also kann ich es nicht tun es genauso, ohne es zu verstehen.
Irgendeine Idee?
danke Etan, ich denke meine alten Schule Erinnerungen kommen jetzt zurück. Nur dieses negative Exponent Ding ist mir nicht zu klar. Wenn meine Mantisse 123 ist und mein exp -3 ist, würde ich dann eine Zahl wie 0,00haben? –
10^-3 ist 0,001, nicht 0,0001, also wenn deine Mantisse 1,23 ist und deine Exp -3 ist, hättest du 0,00123. –
Wenn Mantisse 123 und Exp -3 wäre das 0,123 –