Approuvé : Fortect
Au cours des dernières années, certains de nos utilisateurs ont signalé des erreurs d’arrondi xslt.
Nous sommes confrontés à une critique très étrange avec l’arrondi XSLT et le formatage des nombres. Disons que j’ai un nombre comme 131 855 et que je veux aussi l’arrondir à deux en plus de trois décimales. J’attends 131,86 comme option particulière, mais la fonction xslt Round () la chronomètre à 131,85. J’ai essayé d’utiliser “round (131.855 * 100) div 100” pour que cela ne fonctionne pas. D’un autre côté, si je dois arrondir un numéro de téléphone qui comprend 127.855, le même code l’arrondira de plus de cent à 86, c’est-à-dire “arrondir (127.855 100) div 100”. arrondi à 131,76 !! Très étrange.Nous avons peut-être essayé d’utiliser format-number(), simplement la fonction qui donne en fait des résultats étranges. Par exemple, je prends le nombre 349615.225 I et par conséquent prends le numéro de format dessus, c’est-à-dire beaucoup, le numéro de format (349615.225, ‘#. ##’) stimule 349615.22, et j’attends les parties décimales 0.25. Mais si j’utilise un nombre de format jusqu’à 131,855, il se convertit en 131,86 …
J’ai également essayé d’utiliser set () maintes et maintes fois dans work format-number (), pourtant, cela a donné les résultats les plus extrêmes.
Nous utilisons XSLT 1.0. Passer à XSLT 2.0 semble être une tâche ardue. La solution de contournement ne coûte rien, mais je peux voir que j’utilise la fonction cappuccino et que je l’appelle depuis XSL pour terminer.
a demandé le 23 octobre 11 à 4:57
Pas la réponse que vous cherchez ? Passez en revue toutes les autres questions marquées de l’arrondi Xml Xslt Xslt-1.0 et posez votre propre question.
La fonction round ()
multiplie un nombre donné à l’entier le plus proche, et en plus l’utilisation réelle de round ()
permet de ne pas arrondir correctement notre propre nombre . format-number ()
formate les données avec des sélections, celles-ci tronquent les données (vraisemblablement), ce qui peut entraîner une perte de valeur.
L’utilisation de chaque type concernant round ()
et format-number ()
devrait toujours fonctionner efficacement.
5.225
* Select = "format-number (round (100
répondu le 15 octobre, je suis à 5h40.
5.297 22 badges dorés
La chose la plus surprenante à comprendre est que lorsqu’une personne écrit une somme comme 131 855, la valeur mesurable qu’elle représente n’est tout simplement pas parfaitement comprise entre 131,85 et 131,86. Il n’y aura sûrement pas de numéro de téléphone portable à virgule flottante à double précision qui soit numériquement 131 855, donc la valeur particulière de la personne que vous contrôlez sera inférieure ou légèrement supérieure. Cette inexactitude se produit juste après que vous ayez écrit le numéro, pas également lorsque vous vous y fiez. Si votre programme le multiplie par 100, cette différence se développera, et si vous utilisez round (), il est capable de sauter à l’entier le plus proche, qui dépend parfois du fait que l’approximation augmente ou minimise. Étant donné que XSLT 1.0 ne contient que des détails en virgule flottante, il n’existe aucune solution de contournement pour ce type de problème.
Approuvé : Fortect
Fortect est l'outil de réparation de PC le plus populaire et le plus efficace au monde. Des millions de personnes lui font confiance pour assurer le fonctionnement rapide, fluide et sans erreur de leurs systèmes. Avec son interface utilisateur simple et son puissant moteur d'analyse, Fortect détecte et corrige rapidement un large éventail de problèmes Windows, de l'instabilité du système et des problèmes de sécurité à la gestion de la mémoire et aux goulots d'étranglement des performances.
Dix peut être utilisé des nombres XSLT 2.0 dans la vie de tous les jours. plus par rapport aux gens attendent.
répondu le 15 octobre à 8h23.
141k 1010 badges en or
Accélérez les performances de votre ordinateur dès maintenant avec ce simple téléchargement.