2017-09-18 5 views
1

J'ai besoin d'accéder aux données Bigint pour le traitement. Donc j'essaie de le convertir en personnage et de le traiter. Cependant j'ai remarqué que certains nombres de bigint n'apparaissaient pas dans la table de sortie. J'ai essayé de faire un exemple de programme ci-dessous, qui reproduit le problème.Fonction SAS- Put utilisée pour convertir bigint en char - générer une sortie incorrecte

data m; 
x=put (57259186099807233,20.); 
run; 

proc print data =m; 
quit; 

Pourquoi cela me donne-t-il la sortie "57259186099807232"?

Merci d'avance. NV

+2

Une fois que vous l'avez lu en tant que numérique, il ne sera pas lu correctement. Vous devez changer votre processus pour le lire en tant que personnage en premier lieu. – Reeza

Répondre

3

Voir http://support.sas.com/documentation/...

La plus grande valeur entière qui peut être « en toute sécurité » stockés dans SAS (sur les systèmes Windows) est 9.007.199.254.740.992 qui est inférieure à la valeur dans votre exemple.

Avec des valeurs plus élevées, vous perdrez inévitablement la précision; fait que votre exemple illustre très bien.