skillup

技術ブログ

PHP

PHPでの切り上げ誤差問題

投稿日:2015年12月24日 更新日:

PHPを初めて、4年近くたちますがいまだに知らんことが多いですね(爆)

本日は、

になるという非常にビックリな仕様に遭遇・・・

なにやら結構有名な仕様のようでどうやら2進数と10進数の変換でおこる誤差のようです。

そういやJavaでも似たような処理がありましたね。

私の場合気持ち悪いですが、割った数字をStringにキャスト変換して対応してしましました。

上記の例でいうと、下記のようなコードになります。

そういや昔ECCUBEの中身を見たときの切り上げ、切捨て、四捨五入の処理はceilなどをそのまま使わずに+1したりとかをしてましたね・・・

参考リンク

[php]ceilによる切上げ処理が微妙な感じになる

-PHP

執筆者:


comment

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

関連記事

no image

CakePHP3 日付ライブラリ(Time)について

CakePHPには標準でいろいろなライブラリが入っていますが、日付ではCake\I18n\Timeというライブラリが入っています。 内部では3.2より前のバージョンではCarbonだったようですが、そ …

no image

Laravelでのテスト

Laravelを使ってUnitTestをする場合の注意点など。 Contents1 事前準備2 テストデータ作成機能3 実際のテストコード 事前準備 まずはアプリのディレクトリにあるphpunit.x …

no image

mb_convert_kanaによる半角濁点の処理

PHPネタです。 濁点を処理するときに、カナ本体と濁点が分離していることが多々あります。 一般的には濁点と文字自体を混合させるケースのほうが多いので統一する必要性があるでしょう。 これを1文字にまとめ …

no image

ECCUBE3ディレクトリ構成

ECCUBE3のディレクトリ構造に関して。 自分用 自分用メモです。 設定情報 /app/config/eccube 定数 /src/Eccube/Common/Constant ログ /app/lo …

no image

CakePHPでのプレフィックスルーティング

cakePHPではルーティングがデフォルトでは/コントローラ名/アクション名となります。 ところが管理画面などはadmin/コントローラー名/アクション名などと変則的なURLにしたいことも多いでしょう …