Inhaltsverzeichnis
PHP中浮点数计算比较及取整不准确的解决方法,取整不准确
Heim Backend-Entwicklung PHP-Tutorial PHP中浮点数计算比较及取整不准确的解决方法,取整不准确_PHP教程

PHP中浮点数计算比较及取整不准确的解决方法,取整不准确_PHP教程

Jul 13, 2016 am 10:10 AM
取整 浮点数 wissenschaftliche Notation

PHP中浮点数计算比较及取整不准确的解决方法,取整不准确

浮点数计算结果比较
一则浮点数计算例子如下:

复制代码 代码如下:

$a = 0.2+0.7;
$b = 0.9;
var_dump($a == $b);

打印出的结果是:bool(false)。也就是说在这里 0.2+0.7 的计算结果与 0.9 并不相等,这显然是有违我们的常识的。

对此问题,PHP官方手册曾又说明:显然简单的十进制分数如 0.2 不能在不丢失一点点精度的情况下转换为内部二进制的格式。这和一个事实有关,那就是不可能精确的用有限位数表达某些十进制分数。例如,十进制的 1/3 变成了 0.3333333...。

我们将上面的变量用双精度格式打印出来:

复制代码 代码如下:

$a = 0.2+0.7;
$b = 0.9;
printf("%0.20f", $a);
echo '
';
printf("%0.20f", $b);

输出结果如下:

复制代码 代码如下:

0.89999999999999991118
0.90000000000000002220

显然在这里,实际上作为浮点型数据,其精度已经损失了一部分,达不到完全精确。所以永远不要相信浮点数结果精确到了最后一位,也永远不要比较两个浮点数是否相等。需要说明的是,这不是PHP的问题,而是计算机内部处理浮点数的问题!在 C、JAVA 等语言中也会遇到同样的问题。

所以要比较两个浮点数,需要将其控制在我们需要的精度范围内再行比较,因此使用 bcadd() 函数来对浮点数想加并进行精度转换(为字符串):

复制代码 代码如下:

var_dump(bcadd(0.2,0.7,1) == 0.9); // 输出:bool(true)

浮点数取整

在《PHP 取整函数 ceil 与 floor》一文中,曾有例子:

复制代码 代码如下:

echo ceil(2.1/0.7);    // 输出:4
?>

经过上面对浮点数计算的探讨,知道这是浮点数计算结果不完全精确造成的:

复制代码 代码如下:

printf("%0.20f", (2.1/0.7));    // 输出:3.00000000000000044409
?>

经过上面对浮点数计算的探讨,知道这是浮点数计算结果不完全精确造成的,因此使用 round() 函数处理一下即可:

复制代码 代码如下:

echo ceil( round((2.1/0.7),1) );
?>

虽然 round() 函数是按照指定的精度进行四舍五入,但保留小数点后一位,对我们的取整结果是没影响的。

www.bkjia.comtruehttp://www.bkjia.com/PHPjc/940487.htmlTechArticlePHP中浮点数计算比较及取整不准确的解决方法,取整不准确 浮点数计算结果比较 一则浮点数计算例子如下: 复制代码 代码如下: $a = 0.2+...
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn

Heiße KI -Werkzeuge

Undresser.AI Undress

Undresser.AI Undress

KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover

AI Clothes Remover

Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool

Undress AI Tool

Ausziehbilder kostenlos

Clothoff.io

Clothoff.io

KI-Kleiderentferner

AI Hentai Generator

AI Hentai Generator

Erstellen Sie kostenlos Ai Hentai.

Heißer Artikel

R.E.P.O. Energiekristalle erklärten und was sie tun (gelber Kristall)
3 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Beste grafische Einstellungen
3 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. So reparieren Sie Audio, wenn Sie niemanden hören können
3 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌
WWE 2K25: Wie man alles in Myrise freischaltet
4 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌

Heiße Werkzeuge

Notepad++7.3.1

Notepad++7.3.1

Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version

SublimeText3 chinesische Version

Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1

Senden Sie Studio 13.0.1

Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6

Dreamweaver CS6

Visuelle Webentwicklungstools

SublimeText3 Mac-Version

SublimeText3 Mac-Version

Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

So konvertieren Sie einen String in PHP in eine Dezimalzahl So konvertieren Sie einen String in PHP in eine Dezimalzahl Mar 22, 2023 pm 03:22 PM

PHP ist eine leistungsstarke Programmiersprache, die in der Welt der Webentwicklung weit verbreitet ist. Eine der sehr häufigen Situationen ist die Notwendigkeit, eine Zeichenfolge in eine Dezimalzahl umzuwandeln. Dies ist bei der Datenverarbeitung sehr nützlich. In diesem Artikel erklären wir, wie man in PHP einen String in einen Dezimalwert umwandelt.

PHP-Rundungsmethode für Gleitkommazahlen PHP-Rundungsmethode für Gleitkommazahlen Mar 21, 2024 am 09:21 AM

In diesem Artikel wird die Rundungsmethode für PHP-Gleitkommazahlen ausführlich erläutert. Der Herausgeber hält sie für sehr praktisch, daher hoffe ich, dass Sie nach dem Lesen dieses Artikels etwas gewinnen können. PHP-Gleitkomma-Rundung – Übersicht Gleitkommazahlen werden in Computern als Dezimalpunkt gefolgt von einem Exponenten dargestellt, sie werden jedoch oft in Näherungen mit einer begrenzten Anzahl von Ziffern gespeichert. Wenn Sie eine Gleitkommazahl auf eine bestimmte Genauigkeit runden müssen, gibt es mehrere Möglichkeiten, dies zu tun. Methode 1. Funktion „round()“ Die Funktion „round()“ rundet eine Gleitkommazahl auf die nächste Ganzzahl. Es akzeptiert Gleitkommazahlen und optionale Präzisionsparameter. Zum Beispiel: $num=1.55;echoround($num);//Ausgabe: 2echoround($num,1)

Konvertieren Sie eine Gleitkommazahl mit der Funktion strconv.FormatFloat in einen String Konvertieren Sie eine Gleitkommazahl mit der Funktion strconv.FormatFloat in einen String Jul 25, 2023 am 11:45 AM

Verwenden Sie die Funktion strconv.FormatFloat, um Gleitkommazahlen in Zeichenfolgen umzuwandeln. In der Go-Sprache müssen wir häufig Gleitkommazahlen für Ausgabe- oder Speicherzwecke in Zeichenfolgentypen konvertieren. Das strconv-Paket wird in der Go-Sprache bereitgestellt und die darin enthaltene FormatFloat-Funktion kann Gleitkommazahlen in String-Typen konvertieren. Die FormatFloat-Funktion benötigt drei Parameter: f stellt die zu konvertierende Gleitkommazahl dar, fmt stellt das Format dar und prec stellt die Anzahl der beizubehaltenden Dezimalstellen dar. Darunter der f-Parameter

Ursachen und Vermeidungsstrategien von PHP-Gleitkomma-Berechnungsfehlern Ursachen und Vermeidungsstrategien von PHP-Gleitkomma-Berechnungsfehlern Feb 27, 2024 pm 06:33 PM

Als beliebte serverseitige Skriptsprache treten bei PHP häufig Probleme mit Präzisionsverlusten oder Berechnungsfehlern bei der Durchführung von Gleitkommaberechnungen auf. Diese Probleme können die Genauigkeit und Stabilität des Programms beeinträchtigen. In diesem Artikel werden die Ursachen von PHP-Gleitkommaberechnungsfehlern untersucht, einige Vermeidungsstrategien vorgeschlagen und spezifische Codebeispiele als Referenz angegeben. 1. Gründe für PHP-Gleitkommaberechnungsfehler In Computern werden Gleitkommazahlen in binärer Form dargestellt, und Binärzahlen können nicht alle Dezimalzahlen genau darstellen, was zur Ungenauigkeit von Gleitkommazahlen führt.

So dividieren und runden Sie in PHP So dividieren und runden Sie in PHP Mar 21, 2023 pm 02:52 PM

Mit der Entwicklung der Computerprogrammierung können wir auf Szenarien stoßen, in denen wir in unserer täglichen Programmierarbeit Divisionsoperationen und Rundungen durchführen müssen. Bei der PHP-Programmierung können wir verschiedene Methoden nutzen, um diesen Zweck zu erreichen.

Eine ausführliche Erklärung von PHP BCMath: Das Potenzial von Zahlenoperationen freisetzen Eine ausführliche Erklärung von PHP BCMath: Das Potenzial von Zahlenoperationen freisetzen Feb 23, 2024 am 09:10 AM

:1. Einführung in BCMath BCMath ist eine in PHP integrierte Erweiterungsbibliothek, die speziell für die Verarbeitung großer Ganzzahl- und Gleitkommazahlenoperationen verwendet wird. Es bietet eine Fülle von Funktionen zur Durchführung verschiedener mathematischer Operationen wie Addition, Subtraktion, Multiplikation, Division, Quadrat und Quadratwurzel und unterstützt die digitale Darstellung in mehreren Basen. 2. Vorteile von BCMath Im Vergleich zu den von PHP nativ bereitgestellten arithmetischen Operatoren und Funktionen bietet BCMath vor allem die folgenden Vorteile: Höhere Präzision: Die Operationsergebnisse von BCMath können signifikantere Ziffern behalten, was besonders für Berechnungen mit großen Zahlen nützlich ist. Größerer Bereich: BCMath kann größere Zahlen als die nativen Datentypen von PHP verarbeiten und vermeidet so Überlauf- oder Präzisionsprobleme. Umfangreichere Funktionen: BCMath bietet

Runden Sie Gleitkommazahlen mit der Math.Round-Funktion in C# Runden Sie Gleitkommazahlen mit der Math.Round-Funktion in C# Nov 18, 2023 pm 02:17 PM

Die Verwendung der Math.Round-Funktion in C# zum Runden von Gleitkommazahlen erfordert bestimmte Codebeispiele. In der Programmiersprache C# müssen wir manchmal Gleitkommazahlen runden. Zu diesem Zeitpunkt können wir die Funktion Math.Round verwenden, um diese Funktion zu erreichen. Die Math.Round-Funktion ist eine in C# integrierte Funktion, die für mathematische Berechnungen verwendet wird. Ihre Hauptfunktion besteht darin, die angegebene Gleitkommazahl zu runden. Das folgende ist das allgemeine Format der Math.Round-Funktion: Math.Round(doub

So konvertieren Sie einen String in PHP in einen Float So konvertieren Sie einen String in PHP in einen Float Mar 27, 2024 pm 12:48 PM

Das Konvertieren einer Zeichenfolge in eine Gleitkommazahl ist eine häufige Operation in PHP und kann über integrierte Methoden durchgeführt werden. Stellen Sie zunächst sicher, dass die Zeichenfolge in einem zulässigen Gleitkommaformat vorliegt, bevor sie erfolgreich in eine Gleitkommazahl konvertiert werden kann. Im Folgenden wird detailliert beschrieben, wie eine Zeichenfolge in PHP in eine Gleitkommazahl konvertiert wird, und es werden spezifische Codebeispiele bereitgestellt. 1. (Float-)Cast verwenden In PHP ist die Verwendung von Cast der einfachste Weg, einen String in eine Gleitkommazahl umzuwandeln. Die Möglichkeit, die Konvertierung zu erzwingen, besteht darin, (float) vor der Zeichenfolge hinzuzufügen, und PHP konvertiert sie automatisch

See all articles