c# – 无限循环浮动
发布时间:2020-12-15 19:27:05 所属栏目:百科 来源:网络整理
导读:请考虑以下代码: for (float i = 0f; i int.MaxValue; i++){ // Some code} 应该从0循环到int.MaxValue(231-1),但它没有.一旦我达到224,我就不再工作了,因为我完全无法理解. 在VS的立即窗口中,我试试这个: i16777216.0i + 116777216.0 // ???i == i + 1fal
请考虑以下代码:
for (float i = 0f; i < int.MaxValue; i++) { // Some code } 应该从0循环到int.MaxValue(231-1),但它没有.一旦我达到224,我就不再工作了,因为我完全无法理解. 在VS的立即窗口中,我试试这个: >i 16777216.0 >i + 1 16777216.0 // ??? >i == i + 1 false // as expected,but a lack of consistency with upper statement >i + 2 16777218.0 为什么它会这样? 224 1有什么特别之处? 解决方法
这是因为浮动精度.它基于IEEE浮点运算标准(
IEEE 754).阅读它以了解浮点的工作原理.
简单来说,当一个浮点数本身存储一个大值时;当前存储的数字与它可以存储的下一个数字之间的差异大于1,因此向其添加1并不会增加它的值. 如果您需要精确的十进制数,请使用decimal. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
相关内容
- objective-c – 定义一个协议,只有在实现另一个方法时才需要
- Cocos2d-x结构学习(九)ccV3F_C4B_T2F_Quad、ccV3F_C4B_T2
- 使用C#中的LibTiff(访问平铺的TIFF图像)
- swfupload上传,cookie失效。
- AjaxControlTookit中的Ajax以及JQuery中的Ajax与iframe的兼
- oracle SELECT INTO 和 INSERT INTO SELECT 两种表复制语句
- oracle redo日志恢复
- ajax跨域的解决办法
- 如何获取字符串中某个具体的数值--通过json.load转化成字典
- 11g asm pfile & spfile