浮動小数点型変数で遊ぼっ!-わんくま同盟.ppt

浮動小数点型変数で遊ぼっ!-わんくま同盟.ppt

  1. 1、本文档共34页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
浮動小数点型変数で遊ぼっ!-わんくま同盟

* * * * さっきのかけっこでズルしたっしょ? fld QWORD PTR __real@4341c37937e08000 fld QWORD PTR __real@3fb999999999999a add esp, 12 mov eax,$LN3@main: sub eax, 1 fadd ST(1), ST(0) fadd ST(1), ST(0) fadd ST(1), ST(0) : ST0 = +1.0000000000000000e-0001 ST1 = +1.0000000000000000e+0016 ST0 = +1.0000000000000000e-0001 ST1 = +1.0000000000000000e+0016 ST0 = +1.0000000000000000e+0016 遊び足りない? double d1 = 0.1234567; double d2 = 0.1234566; double dd = d1 - d2; d1 = 1.234567016363144e-001 d2 = 1.234565973281860e-001 dd = 1.043081283569336e-007 ???有効桁数が小さくなる 浮動小数点数値を減算するときに発生する誤差:桁落ち * * * * * * * * * * * * * * * * * * * * * * * * * * * * * わんくま同盟 大阪勉強会 #20 浮動小数点型変数で遊ぼっ!              花子 誰と遊ぶ? それ、どんな子? 双子もいるの? 区別つくかなぁ。。。 どこで遊ぶ? かけっこしよっ! 限界超えて遊ぶぞっ! 朝までオール? でもオールは疲れるよ。。。 違う公園も行こー! さっきのかけっこでズルしたっしょ? 遊び足りない? そろそろお寺の鐘もなるし。。。おかたづけ 誰と遊ぶ? C#ちゃん、VBくんとは遊びません。 Visual C++ 2008だけです。 (Professional Edition 90日間お試し版ですが。。。) 浮動小数点型は???   float, double, long double   C言語には  _Complex :複素数型            _Imaginary:虚数型 今回は、実数の浮動小数点型について それ、どんな子? 言語仕様では、相対的な精度だけ決まってます。    float≦double≦long double 符号部 指数部 仮数部 単精度 1ビット 8ビット 23ビット 倍精度 1ビット 11ビット 52ビット 拡張単精度 1ビット 11ビット以上 31ビット以上 拡張倍精度 1ビット 15ビット以上 63ビット以上 IEEE 754:浮動小数点演算に関する規格 それ、どんな子? Visual C++ 2008では???   float :単精度(32bit)   double :倍精度(64bit)   long double:doubleに変換される(64bit) 16ビット版Visual C++では、 拡張倍精度(80bit) それ、どんな子? 指数部:バイアス(127/1023)を足した値を設定 仮数部:暗黙の1で、精度を1ビット上げる 0.1をfloatにしてみると???   0.0001100110011001100110011001100??? 1.10011001100110011001101×2の-4乗 符号部:0 指数部:-4に127を足して 0111 1011 仮数部:1を取って 100 1100 1100 1100 1100 1101 双子もいるの? 区別つくかなぁ。。。 大丈夫!違う服を着ています。 int main(void) long double ll = 0.1L; float ff = ll; ? ‘long double’ から ‘float’ への変換です。 データが失われる可能性があります。 double dd = ll; ? OK } long doubleはdoubleに変換される Visual C++ 2008では、 精度は同じだけど、型は違う 双子もいるの? 区別つくかなぁ。。。

文档评论(0)

maritime5 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档