浮点数陷阱

自己运行体会,

凭感觉i是可以等于10的,单却出现死循环,这就是浮点数的陷阱

#include <stdio.h>
int main()
{
    double i;
    for(i = 0; i != 10; i += 0.1)
        printf("%.1lf\n", i);
    return 0;
}
时间: 2024-10-05 19:32:44

浮点数陷阱的相关文章

python浮点数陷阱

先放一张图计算机内部对于浮点数处理是不够精确的. 1.浮点数的二进制表示整数部分:用十进制整数整除以2,得到商和余数,该余数就是二进制数的最低位,然后继续用商整除以2,得到新的商和余数,以此类推,直到商等于0,由所有余数倒排组成了该整数的二进制表现形式.小数部分:乘以2,取整数0或者1,剩下的小数继续乘2一直重复,直到小数部分为0或达到指定的精度为止 2.存储规则由于Python封装了C语言的特性,根据国际IEEE754标准进行存储.IEEE754标准包含一组实数的二进制表示法,由符号位.指数位

codeforces Looksery Cup 2015 H Degenerate Matrix 二分 注意浮点数陷阱

#include <cstdio> #include <cstring> #include <algorithm> #include <string> #include <cmath> #include <iostream> using namespace std; bool fun(double l1,double r1,double l2,double r2){ return (l1 <= r2 && l1

Class 1 -- 知识点串讲

int类型的取值范围:-2147483648 - 2147483647,上界是2*109,超出会循环(变负号): 浮点数比大小: (int)a=1   (实际上)a=1.00001 b=1           b=0.99999 然而比大小时的精度不需要那么高,也就是说可以忽略极小的误差.这是我们需要设置eps(ε).一般是保留的位数+3:比如,保留三位小数,eps=1e-6:然而注意不要越界:double eps=1e-15,不能再大了. 根据数轴理解→→→→→→→→→→→→→↓ a==b f

算法竞赛_入门经典_刘汝佳__(2)

1,有几位数字 #include<stdio.h> int main_2_1_digit(){ int n; while(scanf("%d",&n)){ int count = 0; if(n==0) count = 1; while(n){ count++; n/=10; } printf("%d\n",count); } return 0; } 2,三位数的三个数字 #include<stdio.h> int main_2_2_

HDU-4438-Hunters

Hunters Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Total Submission(s): 1107    Accepted Submission(s): 850 Problem Description Alice and Bob are the topmost hunters in the forest, so no preys can escape from

探寻 JavaScript 精度问题

阅读完本文可以了解到 0.1 + 0.2 为什么等于 0.30000000000000004 以及 JavaScript 中最大安全数是如何来的. 十进制小数转为二进制小数方法 拿 173.8125 举例如何将之转化为二进制小数. ①. 针对整数部分 173,采取除 2 取余,逆序排列; 173 / 2 = 86 ... 1 86 / 2 = 43 ... 0 43 / 2 = 21 ... 1 ↑ 21 / 2 = 10 ... 1 | 逆序排列 10 / 2 = 5 ... 0 | 5 /

[算法竞赛入门]第二章_循环结构程序设计

第2章 循环结构程序设计 [学习内容相关章节] 2.1for循环 2.2循环结构程序设计 2.3文件操作 2.4小结与习题 [学习目标] (1)掌握for循环的使用方法: (2)掌握while循环的使用方法: (3)学会使用计算器和累加器: (4)学会用输出中间结果的方法调试: (5)学会用计时函数测试程序效率: (6)学会用重定向的方式读写文件: (7)学会fopen的方式读写文件: (8)了解算法竞赛对文件读写方式和命名的严格性: (9)记住变量在赋值之前的值是不确定的: (10)学会使用条

阿里云前端周刊 - 第 28 期

推荐 1. 现代 JavaScript 语法清单 https://github.com/mbeaudru/m... 本文涉及到了现代项目开发中常用的 JavaScript 语法使用以及示例代码的清单 :本指南并不打算从零介绍 JavaScript,而是对于那些有一定基础知识的开发者提供便捷的工具手册.本文依次介绍了变量声明与使用.箭头函数.默认参数.对象解耦.数组使用.扩展操作符.对象属性.Promise.字符串.模块.类.异步编程等内容: 2. 如何优雅的编写JavaScript代码 http

IO/ACM中来自浮点数的陷阱(收集向)

OI/ACM中经常要用到小数来解决问题(概率.计算几何等),但是小数在计算机中的存储方式是浮点数而不是我们在作数学运算中的数,有精度的限制. 以下以GUN C++为准,其他语言(或编译器)也差不了多少.本文竞赛向. 一.基础篇 1.一般浮点数使用double,范围为大概为-10^308 ~ 10^308,有效精度为15~16位10进制数. 2.一般没事(比如内存问题)不用float,而使用double,一个double占8个字节. 3.信息学竞赛一般使用scanf和printf输入输出,而浮点数