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

Über das Problem, dass Sprintf Dezimalzahlen abfängt

WBOY
WBOYOriginal
2016-10-23 00:12:482370Durchsuche

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>

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>
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>

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

Stellungnahme:
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