ホームページ > バックエンド開発 > PHPチュートリアル > PHP の小数の計算方法は複雑すぎますか?

PHP の小数の計算方法は複雑すぎますか?

WBOY
リリース: 2016-06-23 14:15:04
オリジナル
1099 人が閲覧しました

if(0.030 != (0.530-0.500+0+0))
{
$s = 0.530-0.500+0+0;


これは等しくありませんか?
減算後は 0 ではありません

これは PHP の計算方法ですか?

ディスカッション (解決策) に返信してください

たとえ私が

$f = ( 0.530-0.500 +0+0)*1​​000;

$s = (0.530-0.500+0+0)*1​​000;これも間違っています

浮動小数点数についての知識を復習してください
$f = (0.530-0.500+0+0)*1​​000
$a = (0.030*1000); $ssa = doubleval($a) ) - doubleval ($f);

これは間違っています...どうやって計算したのですか?

単純な 10 進数を 2 進形式に変換するには、浮動小数点数の精度が少し失われます。最後の桁まで正確になることは決してありません。そのため、PHP では、単純な浮動小数点数演算は精度を失い、計算結果に混乱を引き起こす可能性が非常に高くなります

言い方


単純な小数は、2 進数に変換すると 1 の後に失われることはありません小数点精度の形式では、浮動小数点数は最後の桁まで正確になりません。PHP では、単純な浮動小数点数の演算では精度が失われ、計算結果に混乱が生じる可能性があります

そのような計算はどのように行うべきですか?

浮動小数点数についての知識を復習してください
$f = (0.530-0.500+0+0)*1​​000;

$ ssa = doubleval($a) - doubleval($) f);

これは書き方が間違っています...彼はどうやって計算したのでしょうか?

これは PHP だけでなく JAVA にも当てはまります
したがって、PHP ではこれを解決する必要があります 浮動小数点数を使用するには 2 つの方法があります1 つは
if(0.030 != (0.530-0.500+0+0))
$s = 0.53-0.5;
echo $s; です。変数は二重引用符で囲みます

もう 1 つの方法は、round 関数を使用することです


「有効な数」に関する関連知識を学ぶ必要があるようです

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート