diff options
| author | nsfisis <nsfisis@gmail.com> | 2025-10-19 13:07:36 +0900 |
|---|---|---|
| committer | nsfisis <nsfisis@gmail.com> | 2025-10-19 13:07:36 +0900 |
| commit | 5201520a74d8fa49f77a588204d768d8157f73f7 (patch) | |
| tree | 0349b1428d6f95a14393c89accb7a9a7c29b5b4e | |
| parent | fea67022a933d8c55b89c1c96bc3a62661c1fd6e (diff) | |
| download | phpstudy-180-slides-5201520a74d8fa49f77a588204d768d8157f73f7.tar.gz phpstudy-180-slides-5201520a74d8fa49f77a588204d768d8157f73f7.tar.zst phpstudy-180-slides-5201520a74d8fa49f77a588204d768d8157f73f7.zip | |
draft
| -rw-r--r-- | slides.typ | 127 |
1 files changed, 125 insertions, 2 deletions
@@ -20,8 +20,131 @@ #about-slide() -Hoge +数値の範囲を指定して検索する API --- -Piyo +半開区間 +[x, y) +x を含み、y を含まない + +--- + +[3, 7) +3, 4, 5, 6 + +--- + +ちょうど 5 +[5, 6) + +--- + +ちょうど n +[n, n+1) + +--- + +整数ならこれで OK + +--- + +実数なら? + +--- + +ちょうど 1 +[1, 2) +1, 1.5, 1.7, 1.989 + +--- + +[1, 1より少しだけ大きい値) +間に 1 しか入らない範囲 + +--- + +[1, p) +間に 1 しか入らない範囲? + +--- + +[1, p) +間に 1 しか入らない範囲? +(1+p)/2 が入る + +--- + +無理 (実数では) + +--- + +実数は無限精度ある + +--- + +コンピュータ上の実数表現は +有限精度 + +--- + +[1, p) + +--- + +[1, p) +コンピュータ上なら +都合のいい p が存在する + +--- + +64 bit の浮動小数点数の場合 +[1, p) +p = 1.0000000000000002 + +--- + +1 = 0011111111110000000000000000000000000000000000000000000000000000 +p = 0011111111110000000000000000000000000000000000000000000000000001 + +--- + +浮動小数点数 +IEEE 754 + +--- + +IEEE 754 +nextUp +nextDown + +--- + +IEEE 754 +nextUp: 僅かに大きい値を返す +nextDown: 僅かに小さい値を返す + +--- + +ちょうど x +[x, nextUp(x)) + +--- + +PHP には nextUp/nextDown が無い + +--- + +無いので作りました +nsfisis/php-next-after + +--- + +```php +use Nsfisis\NextAfter\NextAfter; + +function toExactFloatRange($from) { + $to = NextAfter::nextUp($from); + return [$from, $to]; +} +``` |
