Maison > interface Web > js tutoriel > Pourquoi toFixed n'arrondit-il pas les valeurs avec précision en Javascript ?

Pourquoi toFixed n'arrondit-il pas les valeurs avec précision en Javascript ?

Patricia Arquette
Libérer: 2024-10-22 14:47:02
original
465 Les gens l'ont consulté

Why is toFixed Not Rounding Values Accurately in Javascript?

toFixed n'arrondit pas avec précision en Javascript

Dans le contexte de la gestion des valeurs des cases à cocher en Javascript, les utilisateurs peuvent rencontrer un défi où le toFixed(2 ) la méthode n’arrondit pas les valeurs de manière appropriée. Par exemple, une valeur de 859,385 peut s'afficher sous la forme 859,38 au lieu de 859,39 attendu.

Incohérences et précision du navigateur

Il est important de noter que la méthode toFixed peut se comporter différemment en fonction du navigateur utilisé. Pour résoudre les incohérences des navigateurs et garantir un arrondi cohérent entre les navigateurs, la solution recommandée consiste à utiliser la méthode toFixed10 ou la fonction personnalisée suivante :

<code class="javascript">function toFixed( num, precision ) {
    return (+(Math.round(+(num + 'e' + precision)) + 'e' + -precision)).toFixed(precision);
}</code>
Copier après la connexion

Implémentation de fonctions personnalisées

L'intégration de la fonction toFixed personnalisée dans le code fourni nécessiterait la modification suivante :

<code class="javascript">var standardprice = parseFloat($('#hsprice_'+this.id.split('_')[1]).val());
var price =  parseFloat($('#hprice_'+this.id.split('_')[1]).val());
var discount =  parseFloat($('#hdiscount_'+this.id.split('_')[1]).val());
var deposit =  parseFloat($('#hdeposit_'+this.id.split('_')[1]).val());

var currSprice = parseFloat($('#hTotalSprice').val());
var currPrice = parseFloat($('#hTotalPrice').val());
var currDiscount = parseFloat($('#hTotalDiscount').val());
var currDeposit = parseFloat($('#hTotalDeposit').val());

currSprice += standardprice;
currPrice += price;
currDiscount += discount;
currDeposit += deposit;

$('#lblTotalSprice').text('$'+addCommas(toFixed(currSprice, 2)));
$('#lblTotalPrice').text('$'+addCommas(toFixed(currPrice, 2)));
$('#lblTotalDiscount').text('$'+addCommas(toFixed(currDiscount, 2)));
$('#lblTotalDeposit').text('$'+addCommas(toFixed(currDeposit, 2)));

$('#hTotalSprice').val(toFixed(currSprice, 2));
$('#hTotalPrice').val(toFixed(currPrice, 2));
$('#hTotalDiscount').val(toFixed(currDiscount, 2));
$('#hTotalDeposit').val(toFixed(currDeposit, 2));</code>
Copier après la connexion

En implémentant cette fonction personnalisée, vous pouvez garantir un arrondi précis quelles que soient les variations du navigateur.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

source:php
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal