c中的浮点数比较

const float CHAZHI = 0.0000001;
float a = ...;
float b = ...;
float d = a - b;

if( d > CHAZHI)
{
    printf("a > b");
}
else if( d < -CHAZHI)
{
    printf("a < b");
}
else if(d <= fabs(CHAZHI))
{
    printf("a = b");
}

参考资料

http://blog.csdn.net/tjlakewalker/article/details/6836735

时间: 2024-12-21 01:57:56

c中的浮点数比较的相关文章

js中的浮点数运算精度问题

js中的浮点数精度一般可以达到16位有效数字,因此有人使用parseFloat(x.toFixed(12))来提高js中浮点运算的精度. 经验证,这种方法当整数位数较少时基本正确,但对于较大或较小的运算结果是无效的,如1222.31*2344,直接运算结果是2865094.6399999997,parseFloat((1222.31*2344).toFixed(12))后仍然是2865094.6399999997,并未提升精度. 此时,应该先将结果归一化后再进行toFixed(12)这样的处理,

计算机中的浮点数(IEEE754)

IEEE读作[a?-'tr?p(?)l-i:],电气和电子工程师协会.这个是一个包括所有电子和计算机技术的专业团体,制定标准是其工作之一. IEEE浮点数算术标准(IEEE 754)是最广泛使用的浮点数运算标准,为许多CPU与浮点运算器所采用. 整数运算和浮点数运算会有不同的数学属性是因为它们处理数字表示有限性的方式不同——整数的表示算然只能编码一个相对较小的数字范围,但是这种表示是精确的:而浮点数虽然可以编码一个较大的数值范围,但是这种表示只是近似的. IEEE规定的浮点数编码会将一个浮点数转

PHP中处理浮点数的一些方法记录

PHP中处理浮点数的一些方法记录 请不要在程序中直接使用等号.大于.加.减.乘.除等操作浮点数,如果需要对浮点数进行以上操作,请使用下面的BC系列函数.以确保准确性及精度. 两个高精度数比较大小 int bccomp ( string $left_operand , string $right_operand [, int $scale ] ) left=right 返回 0 left<right 返回 -1 left>right 返回 1 $scale 需要比较的精度,即小数点后多少位 两个

程序中关于浮点数计算的问题

在进行数值计算编程的过程中往往需要用到浮点数的计算,但浮点数的加减运算通常是会出现误差的.具体出现问题代码如下: double begin = 0.0; //起始位置 double end = 20.0;  //结束位置 int k = 2;  //核函数支持半径的倍数 double initialDis = 0.1;   //粒子间的初始距离(需要与粒子的控制体积保存一致性) /*****************第一步初始化粒子**********/ for(double i=begin-(2

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

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

ACM中的浮点数精度处理

在ACM中,精度问题非常常见.其中计算几何头疼的地方一般在于代码量大和精度问题,代码量问题只要平时注意积累模板一般就不成问题了.精度问题则不好说,有时候一个精度问题就可能成为一道题的瓶颈,让你debug半天都找不到错误出在哪. 1.浮点数为啥会有精度问题: 浮点数(以C/C++为准),一般用的较多的是float, double. 占字节数 数值范围 十进制精度位数 float 4 -3.4e-38-3.4e38 6~7 double 8 -1.7e-308-1.7e308 14~15 如果内存不

shell脚本中的浮点数计算

bash数字计算--数字处理能力对任何一种编程语言都至关重要,可是对于bash shell脚本来说,这种能力很差,即使expr命令和$[ ]的形式也只能进行整数运算,无法完成对浮点数的运算.为了突破这种限制,引进了一种bash的浮点解决方案,就是内置bash计算器(bc) 一.bc介绍 bc实际上是一种编程语言,该语言允许在命令行输入浮点表达式,然后执行. bc可以识别(浮点)数字,变量,表达式,编程语句,函数. 可以使用bc命令从shell提示符访问bc,quit退出bc: [[email p

C# Modbus协议中读取浮点数的操作方法

输入参数P1,P2代表PLC中浮点数储存的两个寄存器获取的数据 public static float GetFloat(ushort P1, ushort P2) { int intSign, intSignRest, intExponent, intExponentRest; float faResult, faDigit; intSign = P1 / 32768; intSignRest = P1 % 32768; intExponent = intSignRest / 128; int

java中的浮点数

浮点数值不适用于禁止出现舍入误差的金融计算中.例如,命令System.out.println(2.0-1.1)将打印出0.8999999999999999999999999,而不是人们想象的0.9.其主要原因是浮点数值采用二进制系统表示,而在二进制系统中无法精确的表示分数1/10.这就好像十进制无法精确地表示1/3一样.如果需要在数值计算中不含有任何舍入误差,就应该使用BigDecimal类.

java中的浮点数相加

今天遇到一个比较有意思的问题,就是两个浮点数相加怎么都得不到正确的答案,刚开始也很纳闷,后来通过在网上找资料后,明白了原来浮点数用2进制进行加减的话确实是会出现这种情况的,也找到了解决办法,所以记录下来,也算是一个比较有意思的认识吧! 首先我们来看看两个带小数的浮点数相加会是什么样子的 package com.controller; public class Test { public static void main(String[] args) { // TODO Auto-generate