Quelle est la meilleure façon de stocker nsdecimalnumbers dans une base de données? Les types numériques comme float, real et double sont supprimés, car il est important de préserver la précision de l'utilisation des devises.comment nsdecimalnumber devrait-il être stocké dans la base de données?
Les deux alternatives que j'ai considérées sont des cordes et stockent deux ints, l'un tenant la mantisse et l'autre tenant l'exposant. Le défi auquel fait face cette dernière approche est que je ne vois pas un moyen facile d'extraire la mantisse et l'exposant du nsdecimalnumber. Je peux obtenir NSDecimal de NSDecimalNumber, mais les propriétés de mantisse et d'exposant semblent être privées! Peut-être que je peux inverser nombre = (mantisse * 10^exposant), mais y a-t-il une meilleure façon de le faire?
L'exigence que j'ai est que j'aurais besoin d'effectuer des opérations de somme globale sur ce champ dans la base de données. Si je stocke comme une chaîne, peut-être effectuer ce calcul serait plus difficile. J'aurais encore besoin d'écrire une fonction personnalisée pour additionner une mantisse et un exposant dans la base de données, alors c'est peut-être toujours aussi lourd. Editer: Je peux accéder à l'exposant, mais la mantisse est conservée d'une manière étrange ... le piquer dans le débogueur révèle qu'il s'agit d'un tableau de court (ints).
Vous vous rendez compte que NSDecimal est défini dans le NSDecimal.h, visible si vous double-cliquez tout en maintenant cmd? Il est également répertorié dans la documentation, bien qu'il indique que les champs sont privés. –
Oui, je sais que je peux y accéder maintenant, mais la mantisse est gardée comme un tableau de petites occurrences. Je suppose que c'est le détail de la mise en œuvre de long signé non signé? Comment lirait-on de manière fiable à partir d'un tableau de court terme? – Ying