並び順

ブックマーク数

期間指定

  • から
  • まで

1 - 34 件 / 34件

新着順 人気順

浮動小数点数の検索結果1 - 34 件 / 34件

タグ検索の該当結果が少ないため、タイトル検索結果を表示しています。

浮動小数点数に関するエントリは34件あります。 プログラミングprogramming数学 などが関連タグです。 人気エントリには 『0.1は浮動小数点数で正確に表せないのに、printしたときに0.1と表示されるのはなぜか - Qiita』などがあります。
  • 0.1は浮動小数点数で正確に表せないのに、printしたときに0.1と表示されるのはなぜか - Qiita

    当たり前のことに感じますが、0.1は浮動小数点数(IEEE 754)では正確に表現できません。 なのにprintをしたときに0.1と表示されるのは不思議です。 このことについて分かったことを書いておきます。 環境 この記事ではPython 3.7を使用しています。 【前提】浮動小数点数 この記事で、以降"浮動小数点数"という場合は、"IEEE 754 倍精度"のことを指します。 浮動小数点数のフォーマットは、数を以下の形式に変換し、sign、exp、fracを順に並べたものです。

      0.1は浮動小数点数で正確に表せないのに、printしたときに0.1と表示されるのはなぜか - Qiita
    • 浮動小数点数オタクが AtCoder Beginner Contest 169 のC問題をガチで解説してみる - Qiita

      どうも、浮動小数点数オタクのmod_poppoです。 昨日開催された ABC169 の C 問題が浮動小数点数の罠な問題だったらしいので、どこが罠なのか、そしてどうすれば罠を回避できるのかを解説してみます。 また、典型的な誤答に対しては、それを落とすためのテストケースも用意しました。 問題文(引用) まず最初に問題文を引用しておきます。 AtCoder Beginner Contest 169 | C - Multiplication 3 問題文 $A\times B$ の小数点以下を切り捨て、結果を整数として出力してください。 制約 $0\le A\le 10^{15}$ $0\le B<10$ $A$ は整数 $B$ は小数第 2 位まで与えられる 入力 入力は以下の形式で標準入力から与えられる。

        浮動小数点数オタクが AtCoder Beginner Contest 169 のC問題をガチで解説してみる - Qiita
      • ArmにあるというJavaScript専用命令とは何か、あるいは浮動小数点数を整数に変換する方法について - Qiita

        Help us understand the problem. What are the problem?

          ArmにあるというJavaScript専用命令とは何か、あるいは浮動小数点数を整数に変換する方法について - Qiita
        • 浮動小数点って何? - Qiita

          件のまとめでは「今の時代になって…」という意見も出てたりしますが、浮動小数点が何か知ってる人にはアタリマエの知識であっても、そうでないと単なる小数データとしか見えなくて、下手すると「計算でズレが出るなんてケシカラン!」という印象を抱くことも少なくないようです。 …本来であれば、(大抵の言語に標準で備わっているデータの種類なので)入門書等で知識を身に着けておくものかと思いますが、ちゃんと説明があるか?というとあまり無いようにも思いますので、ざっくり記事にすることにしました。 固定小数点と浮動小数点 一言で言えば、浮動小数点というのは一般の人が想像するような小数ではなく、計算で誤差が発生することを前提とした数値データのことです。 逆に言えば、浮動小数点を使う時は常に近似計算であることを意識し、結果の精度を考えろということでもあります。 それだけだと、何でそんなイケてないことするの? と疑問に思

            浮動小数点って何? - Qiita
          • "「0.1+0.2≠0.3」だから浮動小数点数を扱うときには気を付けましょう" はいいんだけど結局どうしたらいいのかまでフォローしたほうが親切だと思ったので調べてみた - Qiita

            "「0.1+0.2≠0.3」だから浮動小数点数を扱うときには気を付けましょう" はいいんだけど結局どうしたらいいのかまでフォローしたほうが親切だと思ったので調べてみたPythonプログラミング初心者数学浮動小数点数 釣られた https://qiita.com/higashi_nc/items/9a5ea00415a008f06843 に釣られて読みました。 2行でまとめると以下のような内容です。 10進数の0.1や0.2は浮動小数点数で表すとピッタリ0.1や0.2にはならずに誤差が出る 浮動小数点数の扱いを理解して、より堅牢なプログラムを作成することを願っています。 え?結局どうしたらいいの?という感想だけ残ったので各言語での浮動小数点数同士の比較の方法を ChatGPT に教えてもらいました。 結局どうしたらいいのか 基本的に浮動小数点数同士の差がある程度の誤差より小さければ同じ数であ

              "「0.1+0.2≠0.3」だから浮動小数点数を扱うときには気を付けましょう" はいいんだけど結局どうしたらいいのかまでフォローしたほうが親切だと思ったので調べてみた - Qiita
            • 文字列から浮動小数点数に変換する、なるべく速く - toge's diary

              TL;DR 文字列から浮動小数点数に変換するならfastfloat使いましょう。 私が試せる環境で比較する限り、とても速いです。 細かいことが気になります C++でちょっとしたプログラムを書くときにいつも気になるのが 「文字列データから指定データ型への変換処理をどうやって効率的に書くか」 です。私だけかもしれませんが。 特に悩んでしまうのが「文字列→浮動小数点」です。 std::scanf, std::stringstreamを使うものは大抵すごく遅い std::strtodstd::stodはstd::stringへの変換が入るので避けたい std::from_charsは(libstdc++が)浮動小数点型に対応していない boost::sprit::qiが何故か速いのだけれどこのためにboost::sprit使うのは重い と色々制約が多いのです。どうにかならないものか。 fast_f

                文字列から浮動小数点数に変換する、なるべく速く - toge's diary
              • 浮動小数点数の二段階丸め誤差 - hydrakecat’s blog

                さいきん『浮動小数点数小話』という同人誌を読んでFMA (Fused Multiply-Add)の二段階丸め誤差(double rounding error)について色々と知る機会があったのでまとめておく。ついでにFMAに関するOpenJDKのバグっぽい挙動を見つけたのでそれも併せて記しておく。 FMA (Fused Multiply-Add)とは FMAは以下のような演算のことを呼ぶ。 この演算自体は行列の乗算やベクトルの内積の計算でよく現れるものであるが、通常の浮動小数点数の乗算と加算を別々に行うと誤差が出るので一度の演算で正確な値を算出したいときに用いる。たとえばC言語(C99)では fma、fmaf、fmalという3つの関数が導入されているらしい。 FMAの実装における二段階丸め誤差 FMAはターゲットとなるCPUのアーキテクチャがFMA命令をサポートしていればその命令を直接呼び出

                  浮動小数点数の二段階丸め誤差 - hydrakecat’s blog
                • 浮動小数点数の足し算と掛け算は可換か - Qiita

                  読むのが面倒な人向けの結論:可換です。 「可換です」以外の答えを知りたい人はこの記事を最後まで読んでください。 結合法則と交換法則 実数の足し算や掛け算については結合法則 $x+(y+z)=(x+y)+z$ が成り立ちます。これに対し、浮動小数点数の足し算・掛け算が結合的でないことはとても有名な話です。 例えば、倍精度で (1 + 0x1p-200) + (-1) を計算すると、結合法則が成り立てば答えは 0x1p-200 となるはずですが、実際には 0 が返ってきます。 浮動小数点演算が結合的でないことは有名な話なので、ここではこれ以上詳しくは取りあげません。 一方で、交換法則(可換性)はどうでしょうか?「浮動小数点演算はこういう法則を満たさない!クソ!」みたいな話題で槍玉に上がるのはほとんどの場合結合法則で、交換法則に言及するものはあまり見かけない気がします。 交換法則が成り立つとどう

                    浮動小数点数の足し算と掛け算は可換か - Qiita
                  • 浮動小数点数の文字列化(基数変換) | 雑記帳

                    動機付けと問題 計算機の内部では二進浮動小数点数が使われることが多い一方で、プログラムのソースコードやテキストベースのデータ形式(例:JSON)では十進小数が使われることが多い。 データのシリアライズ等で、内部的な二進浮動小数点数を十進小数に変換して、再度二進小数に戻すという操作が考えられる。この時、元々の二進小数の値が保持されることが望ましい。 有限桁の二進小数は原理的には有限桁の十進小数で表現できるが、指数部が大きかったり小さかったりすると仮数部の桁数も膨張するため実用的ではない。 そこで、基数変換の際に丸めが発生することを許容して、二進小数→十進小数→二進小数の変換が恒等写像となるようにしたい。ただし丸めの方法は最近接丸めであるとする。この時、 途中の十進小数の仮数部は何桁あれば十分か?なるべく短い桁数の十進小数を、正しい丸めで得るためのアルゴリズムはどのようなものか? という問題が

                    • 浮動小数点数オタクがAtCoder Beginner Contest 284のD問題をガチで解説してみる

                      こんにちは、浮動小数点数オタクのmod_poppoです。 昨日開催されたABC284のD問題でsqrtがどうのこうのという声がツイッターで観測されたので、ガチで考察してみます。 問題文(引用) まず最初に問題文を引用しておきます。 AtCoder Beginner Contest 284 | D - Happy New Year 2023 問題文 正整数Nが与えられます。Nは、2つの相異なる素数p, qを用いてN=p^2qと表せることがわかっています。 p, qを求めてください。 T個のテストケースが与えられるので、それぞれについて答えを求めてください。 制約 入力は全て整数 1\le T\le 10 1\le N\le 9\times 10^{18} Nは、2つの相異なる素数p, qを用いてN=p^2qと表せる 2023が7\times 17^2と素因数分解できることにちなんだ問題のよう

                        浮動小数点数オタクがAtCoder Beginner Contest 284のD問題をガチで解説してみる
                      • 【後藤弘茂のWeekly海外ニュース】 AMD Zen 2は実行パイプライン拡張で浮動小数点性能が2倍に

                          【後藤弘茂のWeekly海外ニュース】 AMD Zen 2は実行パイプライン拡張で浮動小数点性能が2倍に
                        • OpenSiv3D for Web | IEEE 754 単精度浮動小数点数

                          • 浮動小数点数の16進表記 - Qiita

                            2進浮動小数点数の10進表記には様々な問題があります。 10進で有限小数として表せる数であっても、2進小数では有限小数で表せない(したがって2進浮動小数点数に変換すると誤差が出る)ことは周知かと思います。例えば 0.1 という実数を2進で表すと という循環小数になり、有限桁で正確に表すことができません。 10進小数を正確に表したい場合は10進浮動小数点数(あるいは10進固定小数点数など、10進に基づいた小数型)を使うのが適切です。逆に、2進浮動小数点数を正確に表現したい場合はそれに適した記数法を使うのが適切です。 2進浮動小数点数に適した記数法として、1999年に制定されたC言語の規格(C99)では、16進法を使って浮動小数点数を記述する方法が導入されました。 16進の1桁は2進の4桁に対応し、2進法で有限小数で表せる数は16進でも有限小数で表せます。逆も然りです。16進表記は浮動小数点数

                              浮動小数点数の16進表記 - Qiita
                            • 浮動小数点数型と誤差

                              有限桁 C言語で扱える実数値は,2進数の有限小数で表された数値である.例えば次のようなものである. 1.5(10) = 1.1(2) 3.25(10) = 11.01(2) 理論的には小数が無限に続く値でも,そのうちの有限個の桁数でその値を表すしかない. 例えば,0.1 を2進数の小数で表すと 0.1(10) = 0.000110011001100110011...(2) と無限に続くが,コンピュータの内部では有限桁で丸められている. このような場合には,本当の値ではなく,近似値でしか表すことができない. 指数表記(浮動小数点表記) 科学計算では非常に大きな実数値や非常に小さな実数値も扱うことがある. そのようなときには,通常の10進数の表記ではなくて,次のような指数表記で表すれば 無駄な 000...000 という桁を表記しなくてもよくなる. 1234567890000000000000

                              • 浮動小数点数の min / max - Qiita

                                多くのプログラミング言語には、「2つ以上の数値が与えられた時、その最小値あるいは最大値」を返す関数 (min / max) が用意されている。入力が整数や有理数であれば難しい話はないのだが、対象が浮動小数点数の場合は厄介な問題が起こる。具体的には、「NaN の扱い」と「0 の符号の扱い」だ。 浮動小数点数の NaN は、皆さんご存知の通り、順序付けられない。NaN が絡む場合の min / max 演算については、「入力に NaN が含まれていたら結果も NaN とする」「NaN を入力の欠落として扱い、NaN でない入力があればそれを返す」などの立場が考えられる。 もっと細かいことを言うと、NaN を返す場合に入力で与えられた NaN を返すか、正規化された NaN を返すかという違いもありうるし、signaling NaN の扱いも議論の余地があるかもしれないが、この記事では細かいこと

                                  浮動小数点数の min / max - Qiita
                                • 浮動小数点数オタクがM1 Macを触ってみた - Qiita

                                  どうも、浮動小数点数オタクのmod_poppoです。 去年はMacのCPUがx86からArm (Apple Silicon)へ移行することが発表され、実際にApple M1搭載のハードウェアが発売されました。Apple Silicon MacにはRosetta 2というエミュレーターが搭載され、x86系のアプリケーションが(仮想化等の一部を除いて)そのまま動作します。 浮動小数点数オタクとして気になるのは、 Armv8で規定された浮動小数点数関連の命令セット拡張のうち、Apple M1がどれを実装しているのか Rosetta 2がx86_64とAArch64の浮動小数点数に関する違いをどのように吸収しているのか という点です。 Armv8のあれこれ long doubleについて long doubleは環境によって精度がまちまちなのは以前の記事に書いた通りです。 long doubleの

                                    浮動小数点数オタクがM1 Macを触ってみた - Qiita
                                  • 4 ビット Float を自作したら、浮動小数点数の精度を理解できた - Qiita

                                    はじめに 浮動小数点数、なんとなくはわかっているものの実は理解がちょっと曖昧、という方いませんか? 僕は恥ずかしながら長らくそんな状態でした。 特に誤差と精度についてはかなり曖昧で、 「どれくらいの数値であればどれくらいの精度があるのか」 という点は全く自信がありませんでした1。(業務上、特に困ったこともなかった) この記事は、試しに4ビットの浮動小数点数を作ってみることにより、浮動小数点数の精度を理解することを目指します。 想定の読者さんは、 「浮動小数点数に関してはざっくり分かっているけど、実は精度や誤差に関してはちゃんと理解していない」 という方々です。具体的に言えば、緯度経度を32ビット浮動小数点数で表すと誤差がどれくらいになるのかがあまりピンと来ない2、という方などです3。 浮動小数点数の概要 ここでは、ざっくり浮動小数点数の概要に関して復習程度に触れます。 概要は分かっていると

                                      4 ビット Float を自作したら、浮動小数点数の精度を理解できた - Qiita
                                    • 浮動小数点数の限界はどこにある? 32bitのデータで表現する数字の世界

                                      Unityを学ぶための動画を集めたサイト「Unity Learning Materials」。ユニティ・テクノロジーズ・ジャパンの安原氏が、ゲーム制作に使う数学について解説しました。パート4のテーマ「浮動小数点数(float)」では、その表現力の限界を具体的に探りました。 パート4のテーマは「浮動小数点数(float)」 安原祐二氏(以下、安原):パート4です。大丈夫ですか。寝ていませんか? パート4を始めていきたいと思います。浮動小数点数、floatです。 簡単な問題を出してみましょう。float aに「1f」を入れた時に、Debug.Logでそのaを出力させたらConsoleに何が出ますか? 急に聞かれると困るかもしれませんが、これは引っかけ問題ではなくて「1」が出ます。 次ですね、「1/3」。1割る3を書いたら何になるかな。これはちょっと引っかけ問題かもしれないですね。「0」になりま

                                        浮動小数点数の限界はどこにある? 32bitのデータで表現する数字の世界
                                      • JSON number や浮動小数点数の話

                                        JSON といえば Web API であったり様々な箇所でお馴染みのデータフォーマットです。最近 play-json という Scala の JSON ライブラリについて話をしたときに、 昔 JSON の number 処理でハマったことがあったのを思い出したので、改めて調べた内容をメモしておこうと思いました。 ハマった内容 JavaScript の挙動の理由 play-json の挙動の理由 JSON の number 仕様 1. ハマった内容 文章で説明すると「JSON で絶対値の大きい整数を number として記述した場合に、同じ JSON なのにそれを処理するプログラム (あるいは言語やライブラリ) によって結果が異なる」というものです。 具体例としては JSON number で表記した 9007199254740999 をパーズした場合、 JavaScript (Google

                                        • 浮動小数点数の限界を把握する - Qiita

                                          いまやあらゆるプログラムで浮動小数点数が使われていますが、ここで改めてその性質を確認してみましょう。 フォーマットのおさらい 浮動小数点数には単精度(float)と倍精度(double)がありますが、例えばゲームプログラムであれば使用頻度が高いのはfloatでしょう。 floatのフォーマットはIEEE754という規格で 符号部:1bit 指数部:8bit 仮数部:23bit と定められています。 指数部には負の値が欲しいので(数値の符号とは別に)、あらかじめ127を加算した値を指数部に格納します。(追記:コメントに議論あり、規格策定の歴史的経緯に言及しているわけではありません) よって指数部にゼロ乗を格納したい場合は上の図のように 01111111 が入ります(という規格です)。 仮数部は1.0を基準に考えたいので、あらかじめ1.0を減算した値を格納します。 よって仮数部に1.0を格納し

                                            浮動小数点数の限界を把握する - Qiita
                                          • 浮動小数点数 | Unity Learning Materials

                                            プログラミングでおなじみのfloat、その表現力の限界を具体的に探ってみましょう。問題のあるケースではどんな事故が起き得るのか、具体例を交えてその性質をおさらいします。

                                              浮動小数点数 | Unity Learning Materials
                                            • 浮動小数点数の非正規化数の存在意義と特徴 - Qiita

                                              先日、浮動小数点数の非正規化数と絡む機会があった。 で、非正規化数のことをよく知らなかったので調べた。 せっかく調べたのでメモを書いておく。 はじめに まあ、ふつうの環境の C / C++ の double 、ふつうの環境の ruby の Float 、いわゆる倍精度のことを念頭に。 以下、IEEE754 の 倍精度のみが唯一の浮動小数点数であるかのような感じで文章を書くけどもちろん本当はそうではないのでご注意を。 よく、C/C++ の DBL_MIN に double型の浮動小数点で表現できる正の値の最小値 などという説明が付与されているけど、これは間違っている。実際

                                                浮動小数点数の非正規化数の存在意義と特徴 - Qiita
                                              • IEEE 754の十進浮動小数点数の基本

                                                浮動小数点形式 IEEE 754で規定された浮動小数点形式は、基数b, 指数部の最大値\mathit{emax}, 精度pの3つのパラメーターで表されます。このうち基数bは2または10で、この記事で扱うのはb=10の場合です。 指数部の最小値\mathit{emin}は1-\mathit{emax}と定められています。 浮動小数点数として表現できる実数は、0\le M<b^pを満たす整数M(仮数部)および\mathit{emin}-p+1\le e\le\mathit{emax}-p+1を満たす整数e(指数部)および0\le s\le 1を満たす整数s(符号)について (-1)^s\times M\times b^{e} と表現できるものです。 Mを範囲b^{p-1}\le M<b^pに収まるようにしたときに指数部が範囲に収まるものを正規化数と呼びます。 例えばb=10, p=3となる形式

                                                  IEEE 754の十進浮動小数点数の基本
                                                • Pythonで浮動小数点数floatの誤差を考慮して比較(math.isclose) | note.nkmk.me

                                                  浮動小数点数floatはコンピュータの内部では2進数で表現されているため、10進数の小数と厳密に同じ値を表現できない。このため、特にif文の条件式で浮動小数点数floatを比較して判定する場合などに想定外の結果となることがある。 浮動小数点数floatを2進数表記や16進数表記に変換したい場合は以下の記事を参照。 関連記事: Pythonで浮動小数点数floatと16進数表現の文字列を相互に変換 NumPyの関数np.isclose(), np.allclose()については以下の記事を参照。 関連記事: NumPy配列ndarrayを要素ごとに比較(比較演算子、np.allcloseなど) スポンサーリンク 浮動小数点数floatの誤差 浮動小数点数floatはコンピュータの内部では2進数で表現されているため、10進数の小数と厳密に同じ値を表現できない。 例えば0.1をprint()で出

                                                    Pythonで浮動小数点数floatの誤差を考慮して比較(math.isclose) | note.nkmk.me
                                                  • 浮動小数点数の加算の順序にハマった話

                                                    fediverseにちょっと書いたけど、仕事でちょっとハマって数時間悩んだ話。 とあるコードを書いていて、どうもテストが安定しなくてflakyになる。つまり、通るときは通るがたまに失敗する。が、理由がよくわからない。 こういうとき、Goでよくあるのはmapのイテレーションの順序が意図的にランダム化されているというパターンだ。mapは(内部的にはハッシュテーブルが使われているので)イテレーションの順序は不定であるし、不定であるべきなので順序に依存するコードを書くべきではない。現実的にはたいていの言語ではこのへんは「実装依存である」ということになっていて、うっかりすると言語のランタイムバージョンが上がったり、キーが一個増えたり減ったりするだけで順序が狂い、突然テストが死ぬみたいな現象によくみまわれる。Goでは意図的にこの問題に対処するために、言語のバージョンが変わらなくても毎回イテレーションの

                                                      浮動小数点数の加算の順序にハマった話
                                                    • 文字列少数点数表記を IEEE754 倍精度浮動小数点数にエンコードする方法|Sukesan1984

                                                      42tokyoというパリ発のエンジニア養成機関で学んでいるのですが、表題の関数が課題で必要になったため、絶対に将来忘れる気がしてならないので自分への備忘録として書き記しておきたいと思います 恥ずかしながら、今まであまりちゃんと浮動小数点数について考えたことがなく、かなり初心者なので、間違っていることがあるかもしれないのですが、そのときはご指摘いただけると嬉しいです こちらの記事を多分に参考にさせていただいています 何度か読み直してみましたが、大変わかりにくくてすみません・・・ 自分でも読んでてよくわからなくなりそうになります 都度、参考実装へのリンクを貼っているのでもしか、興味ある方いればそちらを見てもらったほうが早いかもしれません ソースコードはこちら 動機まず、表題の処理が何故必要なのか?というと42の課題で、Raytracingに関する課題があり、その中でファイルから物体の位置やら色

                                                        文字列少数点数表記を IEEE754 倍精度浮動小数点数にエンコードする方法|Sukesan1984
                                                      • 浮動小数点数小話:だめぽラボ

                                                        浮動小数点数の各種話題を取り扱っています。 筆者がこれまでにブログ、Qiita等に書いた内容の一部と、新規の書き下ろしを含みます。 第1章 浮動小数点数の基礎 第2章 十六進表記 第3章 FMA (fused multiply-add) の話 第4章 丸め方法とその指定 第5章 二段階丸めとその問題点 第6章 浮動小数点例外

                                                          浮動小数点数小話:だめぽラボ
                                                        • IEEE浮動小数点数における平方根演算の精度に関する覚書 - よーる

                                                          IEEE浮動小数点数における演算では、丸め誤差が不可避です。特に、複数回の演算を繰り返すと丸め誤差が積もっていき、正確な値と大きく離れた答えを得てしまうことがあります。しかし、次の演算については、(数学的に)正確な値を求めた後、一回だけの丸めが発生することが、IEEE標準で規定されています。 四則演算 積和演算 Fused multiply add (FMA) 平方根演算(正の平方根を求める*1) 浮動小数点数演算のできるCPUであれば、普通、四則演算や積和演算を行う命令を持っています。 しかし、平方根を正確に計算する命令を持たない命令セットも存在します。 そのような場合、平方根関数はライブラリ実装となるわけですが、どのように実装すれば要求を満たせるのでしょうか? C++のstd::sqrtは正確に計算しているのか? 結論 しています。 標準の丸めモード、つまり最近接丸め(ぴったり半分なら

                                                            IEEE浮動小数点数における平方根演算の精度に関する覚書 - よーる
                                                          • 浮動小数点数の表現と誤差 - Floating Point Number

                                                            はじめに デジタル計算機におけるデータは、全て有限の bit によって表現されています。 ですから、 ある値を表現するために仮に N bit 使っているとするならば、 その値とは高々 2 N の状態しか取りえないわけです。 しかし、 数学における実数とは無限の値を取りうるものであり、 どんなに狭い区間だけを対象とすることにしても、 その区間内に無限個の値が存在するような代物です。 では、 そんな実数を、 高々数十とか百数十のビット数でどのように表現するのでしょうか。 そのことで、 どんな事態が起るのでしょうか。 浮動小数点形式 デジタル計算機を使って数値を表現する場合、 まず、 私たちは数値を『整数』と『実数』とに区別します。 デジタル計算機で用いる整数とは、 零を中心にプラス側とマイナス側にほぼ同じ拡がりを持つ変域を持ち、 その絶対値の最大値は整数表現に用いるビット数で決まります。 一方

                                                            • JavaScriptの浮動小数点数を符号なし64ビット整数で表現したい - Qiita

                                                              はじめに JavaScriptにおける数値は、倍精度浮動小数点数しかないわけですが、倍精度浮動小数点数を構成するビット列を符号なし64ビット整数で表現した値が欲しいという場面がありました。このやり方について調べたので、記事にしてみました。 変換方法 function DoubleToBigInt(f) { var buf = new ArrayBuffer(8); (new Float64Array(buf))[0] = f; lower = BigInt((new Uint32Array(buf))[0]); upper = BigInt((new Uint32Array(buf))[1]); return (upper << BigInt(32)) | lower; } 上記のコードでは、ArrayBufferを経由して、倍精度浮動小数点数から2つの符号なし32ビット整数に変換していま

                                                                JavaScriptの浮動小数点数を符号なし64ビット整数で表現したい - Qiita
                                                              • 浮動小数点数を分かりやすく解説

                                                                浮動小数点数とは、コンピュータにおける数値を表現する方法の一つで、主に小数点を含む数値を表現するときに利用されています。 浮動小数点数の形式浮動小数点数は次のように「符号」「指数部」「仮数部」の形式で表現します。※32ビットの例 符号:正の数が0、負の数が1指数部:2nのnの部分を2進数表記にした値を格納(負の数の場合は2の補数を使用)仮数部:正規化した小数点以下の値を格納 浮動小数点数の「仮数部」には小数点以下の値が入り、指数部には2nのnを2進数にした値が入ります。 正規化とは浮動小数点数の仮数部には正規化した値(小数点以下の値)が入ります。正規化とは、小数点の位置を調整し最上位桁を0以外の値にする作業のことです。 スポンサーリンク 次の図は正規化のイメージ例です。 「0.036×10-2」「0.00036×100」「0.0036×10-1」は同じ値です。この値を「0.36×10-3」

                                                                  浮動小数点数を分かりやすく解説
                                                                • [解決!Python]f文字列の置換フィールドをネストさせて、整数や浮動小数点数の書式化方法を動的に切り替えるには

                                                                  # 浮動小数点数の精度を変更する n = 123.4567 result = f'{n:.5f}' print(result)  # 123.45670 precision = 5 result = f'{n:.{precision}f}' print(result)  # 123.45670 for precision in range(5): result = f'{n:.{precision}f}' print(result) # 出力結果: #123 #123.5 #123.46 #123.457 #123.4567 # 2進/10進/16進の切り替え n = 2050 for flg in ['b', 'd', 'x']: tmp = "_b" if flg == "b" else "#08x" if flg == "x" else "+08d" result = f'{n:{t

                                                                    [解決!Python]f文字列の置換フィールドをネストさせて、整数や浮動小数点数の書式化方法を動的に切り替えるには
                                                                  • 不必要に浮動小数点数を使うの怖い - えびちゃんの日記

                                                                    競プロにおいて、「何かしらの整数を大小比較して、左辺が大きければどうのこうの」みたいなことをしたい局面はそれなりにあります。 特に、境界付近でも正確に評価できる必要がある状況も多いです。 そうした状況で浮動小数点数を使うのはできるだけ避けたいですという気持ちがあります。 導入 まず、浮動小数点数は誤差が出ます*1。 初心者のうちは「浮動小数点数では \(1\div 10\) を正確には計算できない」と聞いても、「たとえば assert_eq!(1.0 / 10.0, 0.1); とかはエラーにならないし、問題なく計算できているのでは?」みたいな誤解をすることもあります。 実際には、0.1 と書いた部分も計算前の時点で 0.1000000000000000055511151231257827021181583404541015625 のような値になっており、所望の状態にはなっていません。 1

                                                                      不必要に浮動小数点数を使うの怖い - えびちゃんの日記
                                                                    • 浮動小数点数の丸めの相対誤差を計算機イプシロンで評価する

                                                                      実数を浮動小数点数に丸めるときに相対誤差がどのくらいになるかを考えます。実数を浮動小数点数に丸める関数をR\colon\mathbf{R}\rightarrow\mathbf{F}とした時に \left|\frac{R(x)-x}{x}\right| あるいは \left|\frac{R(x)-x}{R(x)}\right| を評価したいです。 ここでは浮動小数点数の基数はb、精度はp桁とし、指数部の範囲は無制限とします。 区間b^i\le \lvert x\rvert\le b^{i+1}での浮動小数点数の刻み幅はb^{i-p+1}となります。この刻み幅をulp (unit in last place) と呼びます。 丸め関数Rは次の性質を満たすべきです: 単調である:x\le yの時、R(x)\le R(y) 元の値との差は1ulp未満である:b^i\le \lvert x\rvert

                                                                        浮動小数点数の丸めの相対誤差を計算機イプシロンで評価する
                                                                      1

                                                                      新着記事