タグ

Pythonと誤差に関するmohnoのブックマーク (3)

  • 浮動小数点数オタクが 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
    mohno
    mohno 2020/06/02
    Bを100倍後に四捨五入、が現実的だろうな。入力書式が決まっているならC言語(←オイコラ)→#include <stdio.h> #include <stdint.h> int main(void) { int64_t a; int b, c; scanf("%lld %d.%d", &a, &b, &c); printf("%lld\n", a * (b * 100 + c) / 100); }
  • 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
    mohno
    mohno 2020/01/22
    「Python 3.1 からは、ほとんどの場面で 0.1 のような最も短い桁数の10進数の値を選ぶ」←そうなのか。「Python以外の言語」←C/C++は決められた有効桁数で表示してるだけだぞ。リンク先のツールは興味深い。
  • 数値計算の研究をしている学生が"数値計算に潜むとんでもないリスク"について話してみる - Qiita

    筆者は「精度保証付き数値計算」という分野で研究をしている大学院生です. 「数値計算は分かるけど」「精度保証付き数値計算?ナニソレ?」という方がほとんどだと思います. 「精度保証付き数値計算」の研究自体は30年ほど前から盛んに行われていますが,世間に浸透しているとは言えない状況です. 自分の研究分野が世間に知られていないのは何か少し寂しい感じがするので「精度保証付き数値計算」を少しでも広めるべく記事を投稿することにしました.(シリーズ化するかも知れません) 日は「精度保証付き数値計算」というワードだけでも覚えていただければ幸いです. 今回は"数値計算に潜むとんでもないリスク"に関してカジュアルにお話します. そして筆者の研究分野である「精度保証付き数値計算」の必要性を知ってもらえればなと思います. この記事を読み終える頃には計算機を信頼できなくなっているかも知れません(笑) ※不安を煽るこ

    数値計算の研究をしている学生が"数値計算に潜むとんでもないリスク"について話してみる - Qiita
    mohno
    mohno 2019/12/26
    これくらいは数値計算をやる人なら当然知っておいてほしいところではあるけれど(2次方程式の場合、「b*b」と「4ac」で桁数の差が大きすぎて引算するには“有効桁数”が全然足りてない)
  • 1