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

Über das Problem, dass Sprintf Dezimalzahlen abfängt

WBOY
WBOYOriginal
2016-10-23 00:00:031443Durchsuche

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)

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