Heim > Backend-Entwicklung > PHP-Tutorial > Über das Problem, dass Sprintf Dezimalzahlen abfängt

Über das Problem, dass Sprintf Dezimalzahlen abfängt

WBOY
Freigeben: 2016-10-23 00:12:48
Original
2349 Leute haben es durchsucht

Problem: Behalten Sie 1 Dezimalstelle bei, runden Sie nicht, geben Sie 0 ein, wenn es eine ganze Zahl ist

Viele Leute sagten, sprintf('%.1f',$str); zu verwenden, aber es gibt immer noch Probleme mit den Ergebnissen
Schließlich wurde diese Methode verwendet, um das Problem zu lösen: echo sprintf('%.1f', floor($str));

<code><?php
    $str1 = 12.34;
    $str2 = 12.35;
    $str3 = 12.36;
    echo sprintf('%.1f',$str1);//12.3
    echo sprintf('%.1f',$str2);//12.3
    echo sprintf('%.1f',$str3);//12.4
    
    echo sprintf('%.1f', floor($str3));//12.3
?>
</code>
Nach dem Login kopieren
Nach dem Login kopieren

Haben Sie nicht gesagt, dass Sie nicht runden möchten? Warum wird beim Runden nicht 5 gerundet, sondern nur 6; andere Funktionen
werden auf 5 gerundet. Warum ist das so? number_format($str)

Antwortinhalt:

Problem: Behalten Sie 1 Dezimalstelle bei, runden Sie nicht, geben Sie 0 ein, wenn es eine ganze Zahl ist

Viele Leute sagten,

zu verwenden, aber es gibt immer noch Probleme mit den Ergebnissen sprintf('%.1f',$str);Schließlich wurde diese Methode verwendet, um das Problem zu lösen:
echo sprintf('%.1f', floor($str));

<code><?php
    $str1 = 12.34;
    $str2 = 12.35;
    $str3 = 12.36;
    echo sprintf('%.1f',$str1);//12.3
    echo sprintf('%.1f',$str2);//12.3
    echo sprintf('%.1f',$str3);//12.4
    
    echo sprintf('%.1f', floor($str3));//12.3
?>
</code>
Nach dem Login kopieren
Nach dem Login kopieren
Haben Sie nicht gesagt, dass Sie nicht runden möchten? Warum wird beim Runden nicht 5 gerundet, sondern nur 6; andere Funktionen

werden auf 5 gerundet. Warum ist das so?
number_format($str)

Ich habe es selbst getestet und vermute, dass es ein Problem mit der Genauigkeit der Darstellung von Gleitkommazahlen ist

Referenz
<code class="php"><?php
    echo sprintf('%.0f', 12.5); //12
    echo sprintf('%.0f', 15.5); //16
?></code>
Nach dem Login kopieren

Ob Linux-Gleitkommazahlen gerundet oder gerundet werden (abhängig von der Darstellung der Gleitkommazahlen)

Verwandte Etiketten:
php
Quelle:php.cn
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
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage