C语言编程入门——浮点数

这个涉及到浮点数在计算机中的存储问题。可以测试如下程序:

# include <stdio.h>

int main(void)
{
	float i = 4.3123999;

	if (i - 4.3123999==0)
		printf("i为零。\n");
	else
		printf("i不为零。\n");

	return 0;
}

输出结果为:i不为零。

这是因为浮点数在计算机中的存储精度问题,浮点数不能准确存储一个小数,具体可见《C语言学习笔记》。

测试程序2:

# include <stdio.h>

int main(void)
{
	double i = 0.00000001;

	printf("i = %lf\n", i);

	return 0;
}

/*
	2012年12月11日23:56:51
	结果为i = 0
	  验证了浮点数不能准确存储一个小数。
*/

那么,如何判断一个浮点数是否为0呢?

程序如下:

# include <stdio.h>

int main(void)
{
	float i = 0;

	/*if (0 == 0)
		printf("是零!\n");
	else
		printf("不是零!\n"); //此方法错误!*/

	if (i-0.000001 <= 0.000001)
		printf("是零!\n");
	else
		printf("不是零!\n");

	return 0;
}

版权声明:本文为博主原创文章,未经博主允许不得转载。

时间: 2024-10-08 06:09:02

C语言编程入门——浮点数的相关文章

《Go语言编程入门》视频课程开课了

作为拥有多年工作经验的运维老鸟,我没有选择运维常用的Python作为我今后的主要使用语言.Python编写运维程序的开发效率虽然很高,但随着代码量的增大,以及Python的缩进式语法结构,可读性和维护性并不很高.加之Python本身的设计,并不原生支持多线程多核,我考虑到当程序代码达到一定规模时,必然会考虑它的执行效率和维护成本.最终放弃了Python,选择语言的过程中被Google新出的Go语言吸引了.Go本身脱胎于C,语法和C比较像,我本身就一直学习和编写C和PHP程序,习惯了大括号的语法结

linux 操作系统下c语言编程入门

2)Linux程序设计入门--进程介绍 3)Linux程序设计入门--文件操作 4)Linux程序设计入门--时间概念 5)Linux程序设计入门--信号处理 6)Linux程序设计入门--消息管理 7)Linux程序设计入门--线程操作 8)Linux程序设计入门--网络编程 9)Linux下C开发工具介绍 1)Linux程序设计入门--基础知识 Linux下C语言编程基础知识 前言: 这篇文章介绍在LINUX下进行C语言编程所需要的基础知识.在这篇文章当中,我们将 会学到以下内容: 源程序编

C语言编程入门——动态内存分配

内存管理,是指软件运行时对计算机内存资源的分配和使用的技术.其最主要的目的是如何高效,快速的分配,并且在适当的时候释放和回收内存资源.内存管理是C语言编程中重要的组成部分,C语言中的内存需要手动分配,手动释放,一般遵循分配多少,释放多少,以免造成内存泄漏.内存管理是一项重要且复杂的事情,理解内存管理,对后面课程及项目的学习会有很大的作用. 之前创建变量,是系统自动分配的内存,放在栈内存中,销毁后被系统自动回收,手动分配的内存,放在堆内存中,需要手动释放.千万不要忘记销毁对象手动将内存释放并将指针

C语言编程入门——枚举与宏定义

枚举是编程人员自己定义的一种基本数据类型,这种类型的变量只能取枚举中的值,好处就是能够防止变量的错误赋值.用法:enum 类型名{变量1,变量2,变量3,...} C语言中宏定义是定义在程序头部,作预处理用,有无参和有参两种,可以看作是一个过程的调用,与函数调用不一样,不涉及入栈出栈问题,调用速度快.用法:#define 替换名 原名 宏定义示例1: # include <stdio.h> #define DD "%d" //宏定义,在以下书写中可用DD代替"%d

C语言编程入门——综合练习(一)

至此,C语言的基础知识已经基本学完了,然而你会发现学完C语言,却什么也做不了,当时我学到这里时也是这样,学习编程是一个漫长的过程,前面只是编程语言的基础,后面还会有很长的路要走,希望能够坚持下去. 这里,我们做一些小程序练习,再大的程序也是由小程序组装起来的,正如:不不积跬步,无以至千里. 求菲波拉契亚数列: # include <stdio.h> int main(void) { int n; long f1, f2, f3; int i; f1 = 1; f2 = 2; printf(&q

C语言编程入门——HelloWorld!

 将我的C语言学习过程记录下来,供大家学习交流,适合C语言入门者学习,希望能对大家有帮助. 推荐学习教程:<C语言程序设计> 作者:谭浩强 推荐学习视频:C语言教程 作者:郝斌(链接) 我在学完之后,记下了自己的学习心得,大家可在我的博客中查看(链接) Hello World ,中文意思:你好,世界.世界上的第一个程序就是Hello World,由Brian Kernighan创作. 大多数程序员去学一门语言,写的第一个程序都是HelloWorld! C语言版 Hello World #

C语言编程入门——综合练习(三)学生管理系统

C语言学生管理系统: 此程序综合了链表,排序等知识,可以说是一个综合练习. # include <stdio.h> # include <malloc.h> # include <stdlib.h> typedef struct Student { char name[20]; char sex; int age; int score; char sid[20]; struct Student * pNext; }ST, *PST; void print(void);

C语言编程入门——综合练习(四)上机考试题

这份程序是我们学院C语言上机考试题库中的部分题,由我同学总结,并共享给大家.(Word中的程序,排版有些问题,还请见谅) 求n个(项)数据之和或积 //求n个数据的和(或积) #include <stdio.h> int main() { int a[100];  int i = 0; int n; printf("此程序将实现累和还有累积的功能,请输入项数\n"); scanf("%d", &n); printf("请输入各项\n&q

C语言编程入门——结构体(上)

 在C语言中,结构体(struct)指的是一种数据结构,是C语言中聚合数据类型(aggregate data type)的一类.结构体可以被声明为变量.指针或数组等,用以实现较复杂的数据结构.结构体同时也是一些元素的集合,这些元素称为结构体的成员(member),且这些成员可以为不同的类型,成员一般用名字访问. 结构体是自己定义的结构类型,为以后创建链表结点作铺垫. 定义结构体的三种方式: # include <stdio.h> //第一种方式 struct Student_1 //str