ホームページ バックエンド開発 PHPチュートリアル 两个FLOAT相加出现的奇怪现象~解决思路

两个FLOAT相加出现的奇怪现象~解决思路

Jun 13, 2016 am 10:08 AM
float printf quot

两个FLOAT相加出现的奇怪现象~~~~

PHP code
<!--Code highlighting produced by Actipro CodeHighlighter (freeware)http://www.CodeHighlighter.com/-->list ( $usec, $sec ) = explode ( ' ', microtime () );printf("秒:%.16f", (float)$sec);printf("微秒:%.16f", (float)$usec);printf("相加:%.16f", ( float ) $usec + ( float ) $sec);
ログイン後にコピー

输出结果是:
秒:1327048300.0000000000000000
微秒:0.9687510000000000
相加:1327048300.9687509536743164 

我知道浮点数是一个近似值,但是我现在打印$usec且保留小数点后16位的时候,它就是没有小数啊?那不就可以认为它就等于1327048300吗?
它两个相加为什么不是1327048300.9687510000000000呢??

谢谢!!

------解决方案--------------------
Warning
浮点数精度
显然简单的十进制分数如同 0.1 或 0.7 不能在不丢失一点点精度的情况下转换为内部二进制的格式。这就会造成混乱的结果:例如,floor((0.1+0.7)*10) 通常会返回 7 而不是预期中的 8,因为该结果内部的表示其实是类似 7.9999999999...。
这和一个事实有关,那就是不可能精确的用有限位数表达某些十进制分数。例如,十进制的 1/3 变成了 0.3333333. . .。

所以永远不要相信浮点数结果精确到了最后一位,也永远不要比较两个浮点数是否相等。如果确实需要更高的精度,应该使用任意精度数学函数或者 gmp 函数
------解决方案--------------------
连什么是有效数都弄不清楚,真不明白你们爹妈花许多钱供你们上大学是为什么
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

Video Face Swap

Video Face Swap

完全無料の AI 顔交換ツールを使用して、あらゆるビデオの顔を簡単に交換できます。

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中国語版

SublimeText3 中国語版

中国語版、とても使いやすい

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

神レベルのコード編集ソフト(SublimeText3)

float の最大値はいくらですか? float の最大値はいくらですか? Oct 11, 2023 pm 05:54 PM

float の最大値: 1. C 言語の float の最大値は 3.40282347e+38 IEEE 754 規格によれば、float 型の最大指数は 127、仮数部の桁数は 23 です。このように、最大​​浮動小数点数は 3.40282347 e+38 になります。 2. Java 言語では、最大浮動小数点数は 3.4028235E+38 です。 3. Python 言語では、最大浮動小数点数は 1.7976931348623157e+308 です。

フロートの精度はどれくらいですか? フロートの精度はどれくらいですか? Oct 17, 2023 pm 03:13 PM

float の精度は小数点以下 6 ~ 9 桁に達します。 IEEE754 規格によれば、float 型で表現できる有効桁数は約 6 ~ 9 桁です。ただし、これは理論上の最大精度であり、実際の使用では浮動小数点数の丸め誤差により、float 型の精度が低下する場合があります。コンピュータで浮動小数点数演算を実行すると、浮動小数点数の精度制限により精度の低下が発生する場合があります。浮動小数点数の精度を向上させるために、double や long double などのより精度の高いデータ型を使用できます。

C言語でfloatってどういう意味ですか? C言語でfloatってどういう意味ですか? Oct 12, 2023 pm 02:30 PM

C 言語の Float は、単精度浮動小数点数を表すために使用されるデータ型です。浮動小数点数は科学的表記法で表現された実数であり、非常に大きな値または非常に小さな値を表すことができます。 float 型の変数は、小数点以下有効数字 6 桁の値を格納できます。C 言語では、float 型を使用して浮動小数点数の演算と格納を行うことができます。その変数は、小数、分数、科学的表記法の表現に使用できます。実数は整数型とは異なり、浮動小数点数は小数点以下の数値を表すことができ、小数に対して四則演算を実行できます。

float32 バイトには何が含まれますか? float32 バイトには何が含まれますか? Oct 10, 2023 pm 04:07 PM

float32 バイトには、符号ビット、指数ビット、仮数ビットが含まれており、32 ビット浮動小数点数を表すために使用されます。詳細な紹介: 1. 符号ビット (1 ビット)、数値の符号を表すために使用され、0 は正の数値を表し、1 は負の数値を表します; 2. 指数ビット (8 ビット)、数値の指数部分を表すために使用されます。浮動小数点数、指数ビットを介して浮動小数点数のサイズ範囲を調整できます; 3. 仮数ビット (23 ビット) は浮動小数点数の仮数部分を表すために使用され、仮数ビットは格納されます。浮動小数点数の小数部分。符号ビットは浮動小数点数の符号を決定し、指数ビットと仮数ビットは共同して浮動小数点数のサイズと精度を決定します。

php提交表单通过后,弹出的对话框怎样在当前页弹出,该如何解决 php提交表单通过后,弹出的对话框怎样在当前页弹出,该如何解决 Jun 13, 2016 am 10:23 AM

php提交表单通过后,弹出的对话框怎样在当前页弹出php提交表单通过后,弹出的对话框怎样在当前页弹出而不是在空白页弹出?想实现这样的效果:而不是空白页弹出:------解决方案--------------------如果你的验证用PHP在后端,那么就用Ajax;仅供参考:HTML code

データベースの浮動小数点の長さはどれくらいですか? データベースの浮動小数点の長さはどれくらいですか? Oct 10, 2023 pm 03:57 PM

一般的なデータベースの float 型の長さは次のとおりです: 1. MySQL の float 型の長さは 4 バイトまたは 8 バイトです; 2. Oracle の float 型の長さは 4 バイトまたは 8 バイトです; 3. SQL Server の float 型の長さ8 バイトに固定されています; 4. PostgreSQL の float 型の長さは 4 バイトまたは 8 バイトなどです。

フロートレイアウトはどのような問題を引き起こしますか? フロートレイアウトはどのような問題を引き起こしますか? Oct 10, 2023 pm 03:31 PM

フロート レイアウトでは、フロートのクリア、要素の重複の問題、テキストの折り返しの問題、レスポンシブ レイアウトの問題などの問題が発生する可能性があります。詳細な紹介: 1. フローティングの問題を解決します。フロート レイアウトを使用すると、フローティング要素がドキュメント フローから外れ、親コンテナーがフローティング要素を正しくラップできなくなる可能性があります。この場合、フローティング要素の高さは親コンテナが折りたたまれてレイアウトが混乱する; 2. 要素の重なりの問題 複数の要素がフロート レイアウトを使用すると、フローティング要素が通常のドキュメント フローの位置を占めなくなるなどの理由で、要素が重なり合う可能性があります。

float属性の値は何ですか? float属性の値は何ですか? Oct 10, 2023 pm 02:03 PM

float 属性値には、left、right、none、inherit、clearinline-start、inline-end が含まれます。詳細な紹介: 1. 左、要素は左側にフロートします。つまり、要素はコンテナの左側にできるだけ近くに配置され、他の要素は右側でそれを囲みます。2. 右、要素右にフロートします。つまり、要素は可能な限りコンテナの近くに配置されます。右側では、他の要素が左側でそれを囲みます。3. デフォルト値の none では、要素はフローティングにならず、配置されます。通常の書類の流れなどに準じて

See all articles