7
votes

Supprimer une fuite "." Dans la production numérique de Mathematica

Y a-t-il un moyen simple de s'assurer que, lorsqu'il est converti en cordes, des nombres approximatifs (c'est-à-dire des chiffres avec la tête la tête la tête) "."? Je l'aimerais s'ils n'avaient que le point décimal dans des cas où il y a une partie fractionnelle affichée.

Les solutions que j'ai trouvées ne sont pas robustes et dépendent de l'utilisation de précision et de précision ensemble numéro de numéro de manière gênante, ou en utilisant realDigits d'une manière encore plus gênante.

Merci d'avance.


0 commentaires

4 Réponses :


1
votes

Je viens probablement de post-traiter la chaîne. C'est plus rapide (et plus facile) de vérifier si le dernier caractère est "". que de faire des arithmétiques redondants et de prendre en compte tous les paramètres de précision.

Edit: Vous le savez peut-être, mais vous pouvez faire quelque chose comme ceci: p>

userToString[expr_, form___] := ToString[expr,form];

userToString[expr_Real, form___] := removeTrailingDot[ToString[expr,form]];


0 commentaires

5
votes

J'ai utilisé cela dans le passé lors de l'affichage des chiffres sur les figures:

NormalNumber /@ {5, 5.5, 123.001, 123.0001}


1 commentaires

Je viens d'essayer cela et j'ai constaté qu'il se casse pour une integérance [123.0001] (il renvoie une chaîne se terminant par une fuite ".").



3
votes

Je recommande ceci:

(* Show Number. Convert to string w/ no trailing dot. Round to the nearest r. *)
Unprotect[Round];   Round[x_,0] := x;   Protect[Round];
re = RegularExpression;
shn[x_, r_:0] := StringReplace[
  ToString@NumberForm[Round[N@x,r], ExponentFunction->(Null&)], re@"\\.$"->""]


1 commentaires

Cela joue le rôle de retirer en retrait dans ma réponse. En outre, bien sûr que je suis bien sûr un énorme fan de regex, il est plus rapide de faire la manipulation directe des chaînes - vérifiez le dernier caractère et laissez-le tomber si c'est «». La regex est plus rapide à personnaliser, bien sûr, et peut-être que la vitesse n'est pas une question - mais ce type de fonction peut être appelé à plusieurs reprises. (Vous pouvez également compiler la fonction - ne sait pas du haut de ma tête si cela fonctionne avec regex)



1
votes

Les fonctions NumberForm , Scientificform , Ingénierie , etc. ... offre l'option numberFormat au format et organiser la mantissie, la base et l'exposant d'un nombre. Avec xxx

La sortie Mathematica par défaut est reproduite, mais le point de fuite est supprimé.


0 commentaires