エラー、バグ、質問 - ページ 2623

 
Vladimir Pastushak:

かなり面白い数学

結果

2020.01.05 17:09:28.798 Testert EURUSD,H1: 0.06000000 0.01 6.00

繰り返される質問です。
誰もがいつも IEEE754 規格について話していますが、しばしば人々がWikipediaを見ると、複雑さのためか、怠惰のためか、規格の意味を理解せずに帰ってしまいます。

この投稿をさらに参考にしていただくために、少し時間をかけて、この規格をできるだけ簡潔に、わかりやすい言葉で説明することを心がけたいと思います。


つまり、double は8バイト=64ビットで構成されています。(float 4バイト=32ビット)

また double および float 数値表現は 符号、指数、仮数の3つの要素から構成されて います。


DOUBLE(ダブル)。


フロートです。

当然ながら、このフォーマットでは10進数表現はなく、2進数表現のみとなる。

  • 符号は1ビットです。0なら+(プラス)、1なら-(マイナス)です。
  • 指数は、数 2 の次数を格納する。floatの場合は-12610~12710,doubleの場合は-102210~102310の範囲で指定可能です。
  • 仮数は、2進数の数値自体の分数部分を、その最初の単位に関係なく、最初の単位の後にコンマが立つ形に縮小したもので、コンマは


2進数表現と10進数との関係を少し理解していること。

24= 100002 = 1610

23= 10002 = 810

22= 1002 = 4

21=102= 2

20=12=110

2-1= 0.12=(1/2)10= 0.510

2-2= 0.012 = (1/4)10= 0.2510

2-3= 0.0012 = (1/8)10= 0.12510

2-4= 0.00012 = (1/16)10= 0.062510

2-5= 0.000012 = (1/32)10= 0.0312510

2-6= 0.0000012 = (1/64)10= 0.01562510

2-7= 0.00000012 = (1/128)10= 0.007812510

2-8= 0.000000012 = (1/256)10= 0.0039062510

2-9= 0.0000000012 = (1/512)10= 0.00195312510

2-10= 0.00000000012 = (1/1024)10= 0.000976562510

2-11= 0.000000000012 = (1/2048)10= 0.0004882812510

2-12= 0.0000000000012 = (1/4096)10= 0.00024414062510

2-13= 0.00000000000012 = (1/8192)10= 0.000122070312510

double 型の例で考えて みましょう

例1

891677.4025191という10進数の数字があります。

この数字は2進数で表すことができる。

11011001101100011101.01100111000010110111110110001000001111111010001110
(確認したい人はどうぞ)))

与えられた数値の仮数を取り出すには、コンマを19桁左に移動させ(この場合)、最初の単位の後に来るようにすればよいのです。

1.1011001101100011101011001110000101101111101111000101000001111101110001110* 219

でも、仮数は52ビットしかないんです。そこで、最初の52個の有効ビットを取ります

Мантисса =1011001101100011101011001110000101101111101111000101

指数=(19+1023)10100000100102(指数は符号付き数字で、指数が負になることもあるので(例えば0.0000042132なら)、1023を10に 足す(0111111112)、0111111112はゼロ、それ以上は正、それ以下は負の数です)。つまり、指数の逆数を求めるには、11ビットの指数値から1023を引けばよいのです。

合計すると、私たちの番号891677.4025191は タイプ ダブルでは 次の ようになります。

0100000100101011001101100011101011001110000101101111101111000101

しかし、これは2進数表現なので、正確に10進数に変換してみよう。

ということは、891677.4025190999964252114295947265625と なります。


例2

0.00000145258556224114という10進数の数値があります。

この数字は2進数で表すことができる。

-0.000000000000000000011000010111101100111010110111010011010101001111001110

この数値の仮数を取り出すには、コンマを20桁右に移動させ、最初のコンマの後にあるようにすればよい。

1.1000010111101100111010110111010011010101001111001110* 2-20

Мантисса =1000010111101100111010110111010011010101001111001110

指数 = (-20+1023)10=011111010112

マイナス符号なので、最初のビットは1です。

私たちの合計数-0.00000145258556224114は、ダブルタイプでは次のようになります。

1011111010111000010111101100111010110111010011010101001111001110

10進数に正確に変換します。

это будет-0.00000145258556224113991124017968015191826225418481044471263885498046875



この場合、0.01という数値は、複式で表現されるため、問題が発生します。

0 01111111000 0100011110101110000101000111101011100001010001111011

であり、10進数表記に換算すると、0.0100000000002081668171172168513294309377670288085937510に等しくなる。

一方、表現では

310= 1.5*2 = 1.12*21

510= 2.5*2 = 10.12*21

610= 1.5*4 = 1.12*22

710 = 3.5*2 = 11.12*21

問題ありません。

なぜ、倍の0.01という数字が本当に大きいのか?

その理由はこうです。

0 011111000 01000111101101010010111101110100101111011 - 0.01000000000000000020816681711721685132943093776702880859375 エラー = 0.000 000 000 000 000 000 208166817...

0 01111111000 010001111011100001111010010101111010 - 0.0099999999999847473443344097569175064563751220703125 エラー = - 0.000 000 000 000 000 001 5265566...

このプロセスケミストリーを理解するために、これらの計算機で遊んでみてください。
https://babbage.cs.qc.cuny.edu/IEEE-754.old/Decimal.html

https://baseconvert.com/ieee-754-floating-point

 
Vladimir Pastushak:

かなり面白い数学

結果

2020.01.05 17:09:28.798 Testert EURUSD,H1: 0.06000000 0.01 6.00 Next lot = 0.06999999999
2020.01.05 17:09:28.798 Testert EURUSD,H1: 0.0699999999999.06000000 0.01 6.00 Next lot = 0.06999999999
2020.01.05 17:09:28.798 Testert EURUSD,H1: 0.06000000 0.01 6.00 Next lot = 0.06999999999
2020.01.05 17:09:28.798 Testert EURUSD,H1: 0.06000000 0.01 6.00 Next lot = 0.06000000 0.06999999999 2020.01.05 17:09:28.79806999999999
2020.01.05 17:09:28.798 Testert EURUSD,H1: 0.06000000 0.01 6.00 Next lot = 0.06999999999As 0. 06999999999.06000000 + 0.01 becomes 0.0699999999999
2020.01.05 17:09:28.798 Testert EURUSD,H1: 0.05000000 0.01 5.00 Next lot = 0.06
2020.01.05 17:09:28.798 Testert EURUSD,H1: 0.04000000 0.01 4.00 Next lot = 0.05
2020.01.05 17:09:28.798 Testert EURUSD,H1: 0.03000000 0.01 3.00 Next lot = 0.04
2020.01.05 17:09:28.798 Testert EURUSD,H1: 0.02000000 0.00.01 2.00 Next lot = 0.03
2020.01.05 17:09:28.798 Testert EURUSD,H1: 0.01000000 0.01 1.00 Next lot = 0.02


小数 (double)に対して、なぜ関数 MathFloor以下から最も近い整数 値を返す)を使うのですか?
 
Nikolai Semko:

この質問はよく出ますね。

クール!ネットの中を夢遊病のように進んでいくわけですが、「前回のイテレーションはどこへ行ったのか」という問いに答えられるでしょうか?この例では ;)です。

void OnStart()
{
   for(double x = 10.0; x <= 20.0; x += 0.1) {
      printf("x = %10.60f", x);
      Sleep(111);
   }
}

2020.01.06 01:26:11.016 tst_double (EURUSD,H1) x = 10.0000000000000000000000000000

2020.01.06 01:26:11.127 tst_double (EURUSD,H1) x = 10.099999999999999644728632119994990706443786621093750000000000000

2020.01.06 01:26:11.239 tst_double (EURUSD,H1) x = 10.1999999999999999928945726428998141288757324218750000000000

2020.01.06 01:26:11.350 tst_double (EURUSD,H1) x = 10.299999999999998934185896359849721193313598632812500000000000

2020.01.06 01:26:11.462 tst_double (EURUSD,H1) x = 10.3999999999999999858914528479799628257751464843750000000000000

2020.01.06 01:26:11.574 tst_double (EURUSD,H1) x = 10.49999999999999822364316059974953532218933105468750000000000000

2020.01.06 01:26:11.686 tst_double (EURUSD,H1) x = 10.599999999999997896837179271969944238662719726562500000000000000

2020.01.06 01:26:11.798 tst_double (EURUSD,H1) x = 10.699999999999999975913100424839649349451065063476562500000000000

2020.01.06 01:26:11.910 tst_double (EURUSD,H1) x = 10.79999999999999715997157829056959525651550292968750000000000

2020.01.06 01:26:12.022 tst_double (EURUSD,H1) x = 10.89999999999999699802557907954916357994079589843750000000000000

2020.01.06 01:26:12.134 tst_double (EURUSD,H1) x = 10.99999999999999644728632119994990706443786621093750000000000

2020.01.06 01:26:12.246 tst_double (EURUSD,H1) x = 11.0999999999999960920194953319448977708816528320312500000000000

2020.01.06 01:26:12.358 tst_double (EURUSD,H1) x = 11.1999999999999957954355678543939888477325439453125000000000000000

2020.01.06 01:26:12.470 tst_double (EURUSD,H1) x = 11.299999999999999999538147221755934879183769226074218750000000000000

2020.01.06 01:26:12.582 tst_double (EURUSD,H1) x = 11.399999999999995096200849679298698902130126953125000000000000

2020.01.06 01:26:12.695 tst_double (EURUSD,H1) x = 11.499999999999999467092948179924860596656799316406250000000000000

2020.01.06 01:26:12.808 tst_double (EURUSD,H1) x = 11.599999999999999431565811391985130310058593750000000000000

2020.01.06 01:26:12.920 tst_double (EURUSD,H1) x = 11.69999999999999999396038674603914842004437372558593750000000000000

2020.01.06 01:26:13.032 tst_double (EURUSD,H1) x = 11.7999999999999999360511537815909832715988159179689750000000000

2020.01.06 01:26:13.143 tst_double (EURUSD,H1) x = 11.89999999999999329498440102790482342243194580078125000000000000000

2020.01.06 01:26:13.254 tst_double (EURUSD,H1) x = 11.9999999999992894572642398998141288757324218750000000000000

2020.01.06 01:26:13.367 tst_double (EURUSD,H1) x = 12.099999999999992539301274518948048353195190429687500000000000

2020.01.06 01:26:13.478 tst_double (EURUSD,H1) x = 12.1999999999999929992184029906638897954176330566406250000000000

2020.01.06 01:26:13.590 tst_double (EURUSD,H1) x = 12.29999999999999182828753875884786248207092285156250000000000000

2020.01.06 01:26:13.702 tst_double (EURUSD,H1) x = 12.399999999999999147348717087977956954650878906250000000000

2020.01.06 01:26:13.813 tst_double (EURUSD,H1) x = 12.4999999999999911918215802998747661094665527343750000000000000

2020.01.06 01:26:13.925 tst_double (EURUSD,H1) x = 12.5999999999999907629444351186975836753845214843750000000000

2020.01.06 01:26:14.037 tst_double (EURUSD,H1) x = 12.6999999999990904076730672386490739822387695312500000000000

2020.01.06 01:26:14.149 tst_double (EURUSD,H1) x = 12.79999999999999005240163585973978042602539062500000000000000000

2020.01.06 01:26:14.261 tst_double (EURUSD,H1) x = 12.8999999999999998969713033147854747304848698120117187500000000000

2020.01.06 01:26:14.372 tst_double (EURUSD,H1) x = 12.999999999999989341858963598497211933135986328125000000000000

2020.01.06 01:26:14.483 tst_double (EURUSD,H1) x = 13.0999999999999889865875957184471189975732539062500000000000000000

2020.01.06 01:26:14.596 tst_double (EURUSD,H1) x = 13.1999999999999886313162278393970260620117187500000000000000

2020.01.06 01:26:14.707 tst_double (EURUSD,H1) x = 13.29999999999889276044859958346933126449596093750000000000000

2020.01.06 01:26:14.820 tst_double (EURUSD,H1) x = 13.3999999999999999207734920782968401908874511718750000000000

2020.01.06 01:26:14.932 tst_double (EURUSD,H1) x = 13.49999999999999987521241982467472553317382812500000000000

2020.01.06 01:26:15.044 tst_double (EURUSD,H1) x = 13.59999999999999999998728102307563181966543197631835937500000000000

2020.01.06 01:26:15.157 tst_double (EURUSD,H1) x = 13.69999999999999986854959388438146561380104249804687500000000000

2020.01.06 01:26:15.270 tst_double (EURUSD,H1) x = 13.7999999999999864996880205580964684486389160156250000000000

2020.01.06 01:26:15.381 tst_double (EURUSD,H1) x = 13.89999999999999986991416652678046375513076782226562500000000000

2020.01.06 01:26:15.493 tst_double (EURUSD,H1) x = 13.99999999999857891789145284797629982577514648437500000000000000

2020.01.06 01:26:15.604 tst_double (EURUSD,H1) x = 14.09999999999998543387391691794618964195251464843750000000000000

2020.01.06 01:26:15.717 tst_double (EURUSD,H1) x = 14.19999999999998508786025490378960967063903808593750000000000

2020.01.06 01:26:15.828 tst_double (EURUSD,H1) x = 14.2999999999999849723331181157846003770828247031250000000000000

2020.01.06 01:26:15.941 tst_double (EURUSD,H1) x = 14.399999999999984843680598132777959108352661132812500000000000

2020.01.06 01:26:16.054 tst_double (EURUSD,H1) x = 14.49999999999998484012788445397745817899703979492187500000000000

2020.01.06 01:26:16.167 tst_double (EURUSD,H1) x = 14.5999999999999999983996517077517695724964141845703125000000000000

2020.01.06 01:26:16.280 tst_double (EURUSD,H1) x = 14.69999999999998330224545709637645632028579711914062500000000000

2020.01.06 01:26:16.393 tst_double (EURUSD,H1) x = 14.7999999999999829469474341759553909301757812500000000000

2020.01.06 01:26:16.504 tst_double (EURUSD,H1) x = 14.8999999999999999989982591709297387754544615745544433593750000000000000

2020.01.06 01:26:16.615 tst_double (EURUSD,H1) x = 14.999999999998223643160599749535322189331054687500000000000000

2020.01.06 01:26:16.728 tst_double (EURUSD,H1) x = 15.0999999999999818811602381174452602863311767578125000000000000000

2020.01.06 01:26:16.841 tst_double (EURUSD,H1) x = 15.199999999999989815152588702373951673507690429687500000000000

2020.01.06 01:26:16.953 tst_double (EURUSD,H1) x = 15.29999999999999981170617502357345074415206909179689750000000000000

2020.01.06 01:26:17.066 tst_double (EURUSD,H1) x = 15.399999999999999808153461344772949814796447753906250000000000

2020.01.06 01:26:17.179 tst_double (EURUSD,H1) x = 15.4999999999999804600747665972448885440826401562500000000000

2020.01.06 01:26:17.290 tst_double (EURUSD,H1) x = 15.5999999999999998010480339871719479560852050781250000000000

2020.01.06 01:26:17.402 tst_double (EURUSD,H1) x = 15.69999999999999979797499532030837144702672958374023437500000000000

2020.01.06 01:26:17.514 tst_double (EURUSD,H1) x = 15.7999999999999793942606629570946097393962402343750000000000

2020.01.06 01:26:17.627 tst_double (EURUSD,H1) x = 15.8999999999999997909389295077044516801834106445312500000000000

2020.01.06 01:26:17.740 tst_double (EURUSD,H1) x = 15.9999999999999783717927196194423866271972656250000000000000

2020.01.06 01:26:17.851 tst_double (EURUSD,H1) x = 16.0999999999999801048033987171947956085205050781250000000000000000

2020.01.06 01:26:17.964 tst_double (EURUSD,H1) x = 16.19999999999815998152588702373951673507690429687500000000000000000

2020.01.06 01:26:18.076 tst_double (EURUSD,H1) x = 16.29999999999998982946947434175955390930175781250000000000000000000

2020.01.06 01:26:18.189 tst_double (EURUSD,H1) x = 16.39999999999999984843680598132777959108352661132812500000000000

2020.01.06 01:26:18.302 tst_double (EURUSD,H1) x = 16.4999999999999857891789145284797996282577514648437500000000000000

2020.01.06 01:26:18.414 tst_double (EURUSD,H1) x = 16.59999999999999987210230756318196654319763183593750000000000000

2020.01.06 01:26:18.526 tst_double (EURUSD,H1) x = 16.699999999999999886313162278397026062011718750000000000

2020.01.06 01:26:18.638 tst_double (EURUSD,H1) x = 16.79999999999999005240163585973978042602539062500000000000000000

2020.01.06 01:26:18.750 tst_double (EURUSD,H1) x = 16.899999999999999147348717087977956954650878906250000000000

2020.01.06 01:26:18.861 tst_double (EURUSD,H1) x = 16.9999999999992894597264289981412887573242187500000000000000000

2020.01.06 01:26:18.973 tst_double (EURUSD,H1) x = 17.099999999999994315658113919851303100585937500000000000000000

2020.01.06 01:26:19.085 tst_double (EURUSD,H1) x = 17.19999999999999995739579543585439888477325439453125000000000000000

2020.01.06 01:26:19.197 tst_double (EURUSD,H1) x = 17.2999999999999971578290569595256515502929687500000000000000

2020.01.06 01:26:19.309 tst_double (EURUSD,H1) x = 17.39999999999999858914528479799628257751464843750000000000000

2020.01.06 01:26:19.420 tst_double (EURUSD,H1) x = 17.50000000000000000000000000

2020.01.06 01:26:19.532 tst_double (EURUSD,H1) x = 17.6000000000000421085471520200373717422485351562500000000000

2020.01.06 01:26:19.644 tst_double (EURUSD,H1) x = 17.700000000000000028421709430404007434449703125000000000000

2020.01.06 01:26:19.757 tst_double (EURUSD,H1) x = 17.8000000000426363256414560601115226745605468750000000000000

2020.01.06 01:26:19.870 tst_double (EURUSD,H1) x = 17.9000000005684188608080148696899414062500000000000000000

2020.01.06 01:26:19.982 tst_double (EURUSD,H1) x = 18.00000000007105427357601858711242675781250000000000000

2020.01.06 01:26:20.093 tst_double (EURUSD,H1) x = 18.10000000000000852651282912120223045349121093750000000000

2020.01.06 01:26:20.205 tst_double (EURUSD,H1) x = 18.20000000000000994759830064140260219573974609375000000000

2020.01.06 01:26:20.316 tst_double (EURUSD,H1) x = 18.30000000011368683772161602973937988281250000000000000000

2020.01.06 01:26:20.429 tst_double (EURUSD,H1) x = 18.40000000000127897692436818033456802368164062500000000000000000

2020.01.06 01:26:20.542 tst_double (EURUSD,H1) x = 18.5000000001421085471520200373717422485351562500000000000000

2020.01.06 01:26:20.653 tst_double (EURUSD,H1) x = 18.6000000001563194018672220408916473388671875000000000

2020.01.06 01:26:20.764 tst_double (EURUSD,H1) x = 18.7000000000017053052565824240446090698242187500000000000

2020.01.06 01:26:20.877 tst_double (EURUSD,H1) x = 18.8000000001847411297626260483264923095703125000000000

2020.01.06 01:26:20.989 tst_double (EURUSD,H1) x = 18.90000000000001989519660128280520439147949218750000000000

2020.01.06 01:26:21.101 tst_double (EURUSD,H1) x = 19.000000000213162820728030055761337280273437500000000000

2020.01.06 01:26:21.213 tst_double (EURUSD,H1) x = 19.1000000227367544323205947897759765625000000000000000000000

2020.01.06 01:26:21.326 tst_double (EURUSD,H1) x = 19.20000000024158453015843406319618222250976562500000000000000000

2020.01.06 01:26:21.438 tst_double (EURUSD,H1) x = 19.300000025579538487363609669136047363281250000000000000000

2020.01.06 01:26:21.551 tst_double (EURUSD,H1) x = 19.40000000000002762395888380706310272216796875000000000

2020.01.06 01:26:21.664 tst_double (EURUSD,H1) x = 19.5000000284217094304040074344497031250000000000000000000

2020.01.06 01:26:21.776 tst_double (EURUSD,H1) x = 19.6000000000029842794901924207806587219238282812500000000000

2020.01.06 01:26:21.887 tst_double (EURUSD,H1) x = 19.700000000003126386803734440817832946773437500000000000000

2020.01.06 01:26:22.000 tst_double (EURUSD,H1) x = 19.80000003268494984496460855007171630859375000000000

2020.01.06 01:26:22.112 tst_double (EURUSD,H1) x = 19.9000000003410605131648480892181396437500000000000000



20.0がどこに行ってしまったのか、真摯に理解し、説明したい。

 
Igor Makanu:

かっこいい!寝る間も惜しんでネットサーフィンしているようですが、「前回のイテレーションはどこへ行ったのか」という問いに答えられますか?この例では ;)です。

20.0がどこに行ったのか、真面目に考えて説明したいと思います。

まあ、わかりやすいですね。

double 型の 0.1 は、実際には 0.1000000000000005511151231257827021181583404541015625 で、つまり 0.1 よりも大きい値です。

したがって、最後のチェックでは、すでに20以上、より正確には10+100*0.100000000000000000055511151231257827021181583404541015625 ~ 20.0000000000000000555111512312578 になっているはずです。

で、サイクル終了

と、この実験をすると

void OnStart() {
   for(double x = 0.0; x <= 1.0; x += 0.01) {
      printf("x = %10.60f", x);
   }
}

とすると、最後の反復の結果。

2020.01.05 16:51:40.480 TestDouble (EURUSD,M1)  x = 0.970000000000000639488462184090167284011840820312500000000000
2020.01.05 16:51:40.480 TestDouble (EURUSD,M1)  x = 0.980000000000000648370246381091419607400894165039062500000000
2020.01.05 16:51:40.480 TestDouble (EURUSD,M1)  x = 0.990000000000000657252030578092671930789947509765625000000000

しかし、doubleをfloatに変えると、結果はこうなる。

2020.01.05 16:53:06.926 TestDouble (EURUSD,M1)  x = 0.979999363422393798828125000000000000000000000000000000000000
2020.01.05 16:53:06.926 TestDouble (EURUSD,M1)  x = 0.989999353885650634765625000000000000000000000000000000000000
2020.01.05 16:53:06.926 TestDouble (EURUSD,M1)  x = 0.999999344348907470703125000000000000000000000000000000000000

なぜなら、double の 0.01 は 0.01 よりも大きく、float の 0.01 は 0.01 よりも小さいからです。

 
Nikolai Semko:

というくらいにシンプルです。

double 型の 0.1 は実際には 0.10000000000000055111231257827021181583404541015625 であり、0.1 よりも大きい。

そのため、最終チェックではすでに20以上になっています。正確には10+100*0.1000000000000000055511151231257827021181583404541015625 ~ 20.0000000000000000000555111512312578 です。

で、サイクル終了

OK、了解です。

はい、for()ループで繰り返し、条件を比較することで、問題は解決します。

このコードは、例として示すことができます。

void OnStart()
{
   for(int x = 10; x <= 20; x += 1) {
      printf("x = %10.60f", x);
      Sleep(111);
   }
}

2020.01.06 01:48:50.513 tst_double (EURUSD,H1) x = 10.0000000000000000000000000000

2020.01.06 01:48:50.642 tst_double (EURUSD,H1) x = 11.0000000000000000000000000000

2020.01.06 01:48:50.767 tst_double (EURUSD,H1) x = 12.00000000000000000000000000000000

2020.01.06 01:48:50.892 tst_double (EURUSD,H1) x = 13.0000000000000000000000000000

2020.01.06 01:48:51.017 tst_double (EURUSD,H1) x = 14.0000000000000000000000000000

2020.01.06 01:48:51.142 tst_double (EURUSD,H1) x = 15.0000000000000000000000000000

2020.01.06 01:48:51.267 tst_double (EURUSD,H1) x = 16.0000000000000000000000000000

2020.01.06 01:48:51.392 tst_double (EURUSD,H1) x = 17.0000000000000000000000000000

2020.01.06 01:48:51.517 tst_double (EURUSD,H1) x = 18.0000000000000000000000000000

2020.01.06 01:48:51.642 tst_double (EURUSD,H1) x = 19.0000000000000000000000000000

2020.01.06 01:48:51.767 tst_double (EURUSD,H1) x = 20.00000000000000000000000000000000


予想通り、ループは20に達した時点で終了しました。

 
Nikolai Semko:

いつも出てくる質問ですね。
誰もが IEEE754 規格についていつも話していますが、しばしば人々はwikipediaを見ると - 複雑なためか、怠惰なためか、規格の意味を理解しないまま帰ってしまいます。

今後、この投稿を参照するために、少し時間をかけて、この規格をできるだけ簡潔に、わかりやすい言葉で説明することを心がけたいと思います。

心から、感謝します!ありがとうございました。

このメッセージは、単に倍数の仕組みとしてだけでなく、例として、ググらずにユーザーに理解できる有能な回答として参考になる。

 
Igor Makanu:

つまり、マーケットに投稿する人は無視しろということですか?質問もあったし、議論もあったし、普通の状況だと思うのですが、どうなんでしょう?

PS:

そのうえでprintf()でdoubleをunprintしようとすると、「悟りの精神は我々にどれだけの不思議な発見を用意してくれているのだろうか...」という疑問が湧いてきます。

;)

私は何も提案してないし、誰かに何かを呼びかけたりもしていない。ただ、掲示板では、ご自身の書いたものだけでなく、他の人の書いたものももっとよく読まれた方がいいと思います。特に、本当に経験の浅い人が質問してきたら。なぜなら、これらの問いと答えの中にこそ、自分にとって多くのことを学ぶことができるからです。思いもよらなかった答えが見つかることもあります。このIEEE754という 規格については、個人的には、初心者の質問を読んでいるだけで、もっと早くから知って いました。本当の初心者は...それは、あなたに対するウラジミール宛のメッセージだったのです。

 
Alexey Viktorov:

私は何も提案してないし、誰かに何かを呼びかけたりもしていない。ただ、掲示板では、ご自身の書いたものだけでなく、他の人の書いたものももっとよく読まれた方がいいと思います。特に、本当に経験の浅い人が質問してきたら。なぜなら、これらの問いと答えの中にこそ、自分にとって多くのことを学ぶことができるからです。思いもよらなかった答えが見つかることもあります。このIEEE754という 規格については、個人的には、初心者の質問を読んでいるだけで、もっと早くから知って いました。本当の初心者は...それは、あなたに対するウラジミール宛のメッセージだったのです。

私の5セントを追加します。すべてがIMHOです。浮動小数点数の数学はまさにベースなのに、プログラミングを1年以上やって、ベースを勉強しないのは非常に不思議なことです。だから、ドックとスタンダードだけが、ロシアの(だけでなく)民主主義の父たちを救うのだ。考えて吸ってください。
 
Vladimir Pastushak:

心から、感謝します!ありがとうございました。

この投稿は、2倍速の仕組みとしてだけでなく、ググらなくても、ユーザーに対して有能でわかりやすい回答をしている例としても参考になります。

どういたしまして :)

 

アローコードを探すことはあまりないのですが、ヘルプで探すとすごい大変なんですよねー。

アスタリスクや丸印などの表です。

そして、検索では正しいもの以外が返されるのです