关于C++中double变量精度损失的问题

C/C++ > C++ 语言 [问题点数:40分]
等级
本版专家分:0
结帖率 66.67%
等级
本版专家分:21411
勋章
Blank
红花 2008年2月 Linux/Unix社区大版内专家分月排行榜第一
2007年7月 Linux/Unix社区大版内专家分月排行榜第一
Blank
黄花 2008年3月 Linux/Unix社区大版内专家分月排行榜第二
Blank
蓝花 2012年9月 Linux/Unix社区大版内专家分月排行榜第三
2007年6月 Linux/Unix社区大版内专家分月排行榜第三
等级
本版专家分:6555
等级
本版专家分:15547
勋章
Blank
黄花 2014年11月 C/C++大版内专家分月排行榜第二
2014年10月 C/C++大版内专家分月排行榜第二
2014年8月 C/C++大版内专家分月排行榜第二
等级
本版专家分:384330
勋章
Blank
状元 2017年 总版技术专家分年内排行榜第一
Blank
榜眼 2014年 总版技术专家分年内排行榜第二
Blank
探花 2013年 总版技术专家分年内排行榜第三
Blank
进士 2018年总版新获得的技术专家分排名前十
2012年 总版技术专家分年内排行榜第七
等级
本版专家分:384330
勋章
Blank
状元 2017年 总版技术专家分年内排行榜第一
Blank
榜眼 2014年 总版技术专家分年内排行榜第二
Blank
探花 2013年 总版技术专家分年内排行榜第三
Blank
进士 2018年总版新获得的技术专家分排名前十
2012年 总版技术专家分年内排行榜第七
等级
本版专家分:1484
Lenhoon

等级:

关于C++ double浮点数精度丢失的分析

看了一篇关于C/C++浮点数的博文,在Win32下,把int, 指针地址,long等4字节整数赋给一个double后,再用该double数赋给原始类型的数,得到的结果于最初的数值一致,即不存在任何精度丢失。例如下面的结果将总是true: ...

C/C++ 精度损失下的浮点数比较

等于运算符(==)const double eps = 1e-8; #define Equ(a,b) (fabs((a)-(b))<(eps))大于运算符(>)const double eps = 1e-8; #define More(a,b) (((a)-(b))>(eps))小于运算符(<)const ...

double类型精度损失问题

在十进制小数有些是无法完整用二进制表示的。它们只能用有限位来表示,从而在存储时可能就会有误差。十进制的小数采用乘2取整法进行计算,去掉整数部分后,剩下的小数继续乘以2,直到小数部分全为0. 有的小数可能...

C++ double变量精度损失问题!!!

调试变量观察14.5*0.01 double型的值为0.149999999999999999999999,但是如果直接出入保存到double是都不会有精度损失,只要一和double运算则0.145都会自动变为0.149999999999999,请问这种问题该如何解决?...

C++ 判断double变量是否为0

在笔试题我们总会看到让判断double变量是否为零是否正确的题目。判断double变量是否为零不能像我们直观想象的那样double d;if( d == 0 );这种做法是极其错误的,因为double是双精度的,他表示本身就是有精度误差的...

C++中float与double类型的精度区别

double精度高,有效数字15-16位,float精度低,有效数字6-7位,但是double消耗的内存是float的两倍,运算速度比float慢得多,建议能用float保证精度的就用float,少用double。   #include  #include  using ...

double类型变量输出到文本文件(txt) 控制输出有效位数

C++中将double变量输出到txt文本时,使用默认的输出操作符输出,只能输出6位有效数字,有时不能达到精度要求。没有精度控制,将double变量输出到txt的代码如下#include using namespace std; int main() { ...

C++ 变量相除(/)注意事项 double 型比float型要快一点

double a=1/5; cout double a1=1.0/5; cout

字符串转换为浮点数时如何避免精度损失

字符串转换为浮点数的函数,标准C提供的函数是atof(char *),C++ Builder 提供了一个函数 StrToFloat(AnsiString *),但是如果你直接定义一个浮点数变量,将字符串转换为单精度浮点数的话,很容易出问题,出现精度...

准确详解:C/C++ float、double数据类型的表示范围及精度

今天复习C++遇到了float、double数据类型的表示范围及精度问题,花费了一些时间重新梳理了一遍,鉴于网上很多文章写的并不清晰,并且有不少疏漏错误之处,特结合个人理解仔细整理如下。 要弄清楚这个问题,首先要搞...

C++小数该用什么数据类型

1. 单精度,float a = 12; printf("%f ", a); 输出 : 12.0000002. 双精度double a = 12; printf("%f %lf", a, a); 输出:12.000000 12.0000003. int a = 12.3, b = 12.6; printf("%d %...

atof 到float 类型 精度损失.`

字符串转换为浮点数的函数,标准C提供的函数是atof(char *),C++ Builder 提供了一个函数 StrToFloat(AnsiString *),但是如果你直接定义一个浮点数变量,将字符串转换为单精度浮点数的话,很容易出问题,出现精度

double 转float 损失精度

有符号型: short 在内存占两个字节,范围为-2^15~(2^15-1) int 在内存占四个字节,范围为-2^31~(2^31-1) long在内存占四个字节,范围为-2^31~2^31-1 无符号型:最高位不表示符号位 unsigned short 在内存...

浮点数的范围和精度问题(从原理到结论)

浮点数的范围和精度问题(float和double的比较) 今天遇到一道C++题,非常简单,就是比较两个浮点数是否相等。我的第一思路就是输入两个double类型的变量a,b,看a-b的绝对值是否小于1e−81e^{-8},是则相等。 但是...

C/C++中double类型四舍五入

本身系统全部使用长整型(long or long long),数据库使用decimal,从而防止double类型的精度缺失情况以及数据库小数点后几位的乱七八糟。(这是最基本的金额字段处理)  但,当遇到除法时还是会出现浮点数...

bool、int、float、double变量与0值的比较

bool规定为ture和false,但是关于ture值的定义在不同的环境和系统,定义可能不同,C++中规定ture为1,但是VB规定ture为-1,所以不要把bool类型的变量与ture、1、-1、0直接进行比较,这很有可能会造成程序错误。...

C++解决数据精度问题,对浮点数保存指定位小数

    ------ 更新日期 2018年5月13日 21:41:46     1、背景  对浮点数保存指定位小数。比如, 1.123456. 要保存1位小数,,调用方法后, 保存的... 再比如,1.98765, 保存2位小数的结果为: 2.00. ...ss...

C语言0和0.0f的区别

因为C语言默认的浮点型常量类型为double类型,所以这样写程序执行时会存在一个将双精度浮点型变量转化为单精度浮点型变量的过程,这个过程可以通过如下的方式去除掉。 float a = 0.0f; 虽然这个转化的过程可以被...

关于C和C++中的基本数据类型int、long、long long、float、double、char、string的大小及表示范围

一、基本类型的大小及范围的总结(以下所讲都是默认在32位操作系统下): 【单位描述】  字节:byte  位:bit 1. 短整型short:  所占内存大小:2byte=16bit;  所能表示范围:-32768~... 所能表示...

C++中,float double区别

类型 比特数 有效数字 数值范围   float 32 6-7 -3.4*10(-38)~3.4*10(38)   double 64

c++ auto类型用法总结

auto是c++程序设计语言的关键字。用于两种情况 (1)声明变量时根据初始化表达式自动推断该变量的类型 (2)声明函数时函数返回值的占位符 二、简要理解 auto可以在声明变量时根据变量初始值的类型自动为此变量...

double比较大小

转自... 参考: Comparing floating point numbers  ...0. float占4byte,精度是6~7位;double占8byte,精度是15~16位。  1. 因为double类型或f

c++四舍五入函数,向上取整,向下取整函数

C++中也有类似的取整函数。在C++的头文件有floor()和ceil()函数。在STL还有round()函数。这三个函数的作用如下:             函数名称 函数说明 2.1 2.9 -2.1 -2.9 ...

c++中 int, long long, double 等数据类型的长度及范围整理

先附上一个比较直观的表,长度表示字节:  byte: 字节 bit: 位 1. 短整型short:  所占内存大小:2byte=16bit;  所能表示范围:-32768~32767;(即-2^15~2^15-1)   2. 整型int: ...(即-2^...

有关C++的数据类型(int,long,short,float,double等等)

看书的时候总结几个方便以后复习: 1、整形:表示整数、字符和布尔值的算数类型的合称; 2、字符类型有两种:char和wchar_t,char类型通常是单个字节,wchar_t类型用于扩展字符集,比如汉字和日语,这些字符集不能...

从《thinking in C++》被迫转到《C++ Primer》第一天

今天啃《thinking in C++》有种不能继续下去的感觉,一方面我一看书就停不下来,难懂+没有休息容易困,所以看的速度并不快。另外感觉里边有很多内容在建立在你了解其使用的基础上的理论提升,所以我认识需要补一下...

C++判断一个数是否为整数

运行下面的代码#include <iostream> #include <cmath> using namespace std;int main() ... double result = log(n)/log(3); cout<<result<<endl; cout<<(int)result<

C++中double型数据的取模运算

 由于double型数据存在精度问题,所以不能以往常的思想解决---即取得 n = kp + r;这里我的思路是将double型数据放大后转为int型数据取模,然后再缩小为放大的倍数。 2.double型数据转换为字符串  因为我们...

c++基本数据类型基本类型: 整型: 短整型: short int 整型: int 长整型:long int 字符型:...

基本类型:   整型: 短整型: short int 整型: int 长整型:long int ...长双精度型:long double   布尔型 bool       派生类型: 指针类型(*) 枚举类型(enum) 数组类型([]

C++输出精度控制

如下代码: #include #include using namespace std; void main() { double f = 3.1415926535; cout ; //-----------------方法一------------------- /* cout.precision(3

相关热词 c# 挂机锁 c# 不能再打开其它表了 c#移除行 c#socket建立通信 c# 拦截socket c#做一个问卷调查 c++结构体转换为c# c# 判断组合键 c# 的类 重写dll c# 五层嵌套 优化