Maison >développement back-end >tutoriel php >Analyser PHP pour gérer les nombres à virgule flottante, les opérations de précision, le traitement des nombres, etc.
Cet article vous présentera le traitement PHP des nombres à virgule flottante, les opérations de précision, le traitement des nombres, etc. Il a une certaine valeur de référence. Les amis dans le besoin peuvent s'y référer. J'espère qu'il sera utile à tout le monde.
1. Les nombres à virgule flottante PHP sont utilisés pour les calculs. Si vous ne faites pas attention, des écarts se produiront, notamment dans le secteur financier et le commerce électronique. commandes et projets de centres commerciaux.
2. Les nombres à virgule flottante ont une précision limitée. Bien que cela dépende du système, PHP utilise généralement le double format IEEE 754, donc l'erreur relative maximale due à l'arrondi est de 1.11e-16. Les opérations mathématiques non fondamentales peuvent donner lieu à des erreurs plus importantes, et la propagation des erreurs lors de l'exécution d'opérations composées doit être prise en compte. Ne faites jamais confiance à un résultat à virgule flottante jusqu'au dernier chiffre et ne comparez jamais deux nombres à virgule flottante pour vérifier leur égalité. Si vous avez vraiment besoin d'une plus grande précision, vous devez utiliser des fonctions mathématiques de précision arbitraire ou la fonction gmp.
//加 $a = 0.1; $b = 0.7; $c = intval(($a + $b) * 10); echo $c."0c6dc11e160d3b678d68754cc175188a"; //输出:7 //减 $a = 100; $b = 99.98; $c = $a - $b; echo $c."0c6dc11e160d3b678d68754cc175188a"; //输出:0.019999999999996 //乘 $a = 0.58; $b = 100; $c = intval($a * $b); echo $c."0c6dc11e160d3b678d68754cc175188a"; //输出:57 //除 $a = 0.7; $b = 0.1; $c = intval($a / $b); echo $c."0c6dc11e160d3b678d68754cc175188a"; //输出:6
1. Pour les mathématiques à précision arbitraire, PHP prend en charge l'arithmétique binaire sur des nombres de toute taille et précision représentés sous forme de chaînes.
2. Manuel officiel : php.net/manual/zh/book.bc.php
3. Avant de l'utiliser, veuillez confirmer si bcmath a été installé.
//加 $a = 0.1; $b = 0.7; $c = intval(bcadd($a, $b, 1) * 10); echo $c."0c6dc11e160d3b678d68754cc175188a"; //输出:8 //减 $a = 100; $b = 99.98; $c = bcsub($a, $b, 2); echo $c."0c6dc11e160d3b678d68754cc175188a"; //输出:0.02 //乘 $a = 0.58; $b = 100; $c = intval(bcmul($a, $b)); echo $c."0c6dc11e160d3b678d68754cc175188a"; //输出:58 //除 $a = 0.7; $b = 0.1; $c = intval(bcp($a, $b)); echo $c."0c6dc11e160d3b678d68754cc175188a"; //输出:7
1 bccomp compare deux nombres de précision arbitraires
2. bcmod compare un module numérique de précision arbitraire
3. bcpow La puissance des nombres de précision arbitraires
4 bcpowmod Le module de puissance numérique de haute précision
5. fonctions
6. bcsqrt La racine quadratique d'un nombre de précision arbitraire
echo floor(5.1); //输出:5 echo floor(8.8); //输出:8
echo ceil(5.1); //输出:6 echo ceil(8.8); //输出:9
echo round(5.1); //输出:5 echo round(8.8); //输出:9 //保留两位小数并且进行四舍五入 echo round(5.123, 2); //输出:5.12 echo round(8.888, 2); //输出:8.89 //保留两位小数并且不进行四舍五入 echo substr(round(5.12345, 3), 0, -1); //输出:5.12 echo substr(round(8.88888, 3), 0, -1); //输出:8.88
1. les cinq derniers ne sont pas vides, alors ajoutez-en un. Si les cinq derniers sont vides, regardez le nombre impair ou pair, si les cinq premiers sont pairs, jetez-le. Si les cinq premiers sont impairs, ajoutez-en un.
2. Conserver deux décimales. Exemple :
1.2849 = 1.28 -> 四舍 1.2866 = 1.29 -> 六入 1.2851 = 1.29 -> 五后非空就进一 1.2850 = 1.28 -> 五后为空看奇偶,五前为偶应舍去 1.2750 = 1.28 -> 五后为空看奇偶,五前为奇要进一
1. Appliqué à l'affichage des montants, comme les soldes des cartes bancaires que l'on voit souvent.
echo number_format('10000.98', 2, '.', ','); //输出:10,000.98 echo number_format('340888999', 2, '.', ','); //输出:340,888,999.00
Étude recommandée : "Tutoriel vidéo PHP"
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!