社区
C++ 语言
帖子详情
double与int的隐藏类型转问题
ylhyh
2004-09-20 12:15:44
#include <iostream>
using namespace std;
void main()
{
double v1,v2,v3;
int v4;
v1=112;
v2=1.12;
v3=v1/v2;
v4=v3;
cout<<v3<<endl;
cout<<v4<<endl;
}
在上面的这段程序的输出结果是:
100
99
高手解释一下把V3赋给V4的时候精度在那里丢了?
...全文
220
12
打赏
收藏
double与int的隐藏类型转问题
#include using namespace std; void main() { double v1,v2,v3; int v4; v1=112; v2=1.12; v3=v1/v2; v4=v3; cout<<v3<<endl; cout<<v4<<endl; } 在上面的这段程序的输出结果是: 100 99 高手解释一下把V3赋给V4的时候精度在那里丢了?
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
12 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
ylhyh
2004-09-22
打赏
举报
回复
先结了再说,谢谢各位,不明白的我再问
idleguy
2004-09-21
打赏
举报
回复
IEEE的存储方式说起来会很多,你到这里看看吧。
http://blog.csdn.net/fireseed/archive/2004/05/25/2180.aspx
奶油写过的一篇文章。那里面是对32位浮点的说明。
IEEE 64bit float和那个方法一样,只是指数位是11bits,尾数是52bits.
因为前几天在折腾IBM float format和IEEE float format之间的转换。对这些还有一点心得。
如果有问题,请发论坛消息给我。很乐意帮忙,
lsdkzkald
2004-09-21
打赏
举报
回复
感觉是不同的编程器实现不同。
ylhyh
2004-09-21
打赏
举报
回复
书桌,你所用的IEEE数据表示方式,不明白,能不能解释一下?
ylhyh
2004-09-20
打赏
举报
回复
另外请教 Leaf_jo(大肥羊) :
用VC.NET做出来了程序在运行时要不要.Net FrameWork?
idleguy
2004-09-20
打赏
举报
回复
精度是不是在另外的4个字节中丢掉了?
编译器好像对于double/float转到int是截掉小数部分。
下面是我进行的一系列转换。不知道对不对。
double v1=112;(IEEE 下同):0x405c000000000000
double v2=1.12;0x3ff1eb851eb851ec.实际上是1.1200000000000001
double v1/v2;结果并不是100,而是99.999999999999986.即0x4058ffffffffffff.
将结果化为2进制:
0100 0000 0101 1000 1111...48个1
所以,指数是10000000101:1029 所以指数是6.(1029-1023)
尾数:1000 1111...48个1.
将小数点右移6位,100011.11111111....
前面补1
1100011.111111...
直接去掉小数部分剩下1100011
这个就是转之后的int.当然最开始符号位是0。
01100011=99
ylhyh
2004-09-20
打赏
举报
回复
我用VS6的环境,单步执行时监控如下:
V1:112.00000000000
V2:1.1200000000000
V3:100.00000000000
赋值前V4:-858993460
赋值后V4:99(V3不变)
难道显示的值跟CPU内部实际处理的值不一样?
Leaf_jo
2004-09-20
打赏
举报
回复
我用的是VC.net。
v3的真实值是99.999999999999986。
注意,对浮点数的输出不是简单截断的,因此cout<<v3<<endl;输出的是100。
而将v3付给v4的时候则截断了小数部分。
daylove
2004-09-20
打赏
举报
回复
就是给v4赋值的那一行呀:
v4=v3;
编译器提示:从“double”转换到“int”,可能丢失数据
ylhyh
2004-09-20
打赏
举报
回复
如果V3是99.9999的话,为什么把它原样输出的时候就是100
ma100
2004-09-20
打赏
举报
回复
因为v3可能是99.999
daylove
2004-09-20
打赏
举报
回复
win32控制台的程序不需要
MySQL 数据
类型
和运算符
Re: MySQL 数据
类型
和运算符 ============================= # 数据
类型
整数
类型
:五种 TINY SMALL MEDIUM
INT
BIG 浮点和定点小数
类型
:三种 FLOAT
DOUBLE
DECIMAL 日期与时间数据
类型
:五种 YEAR -1 字符串
类型
...
2021-01-20 hive-分区字段操作+
double
转
int
hive 分区简单操作 +
double
转
int
大数据难免要进行分区,这样可以方便针对性处理。 目录 1、分区 2、
double
转
int
大数据难免要进行分区,这样可以方便针对性处理。 个人工作经历:我们将数据抽到hive后,会...
重载
类型
转
换运算符
double
,
int
,string
#include #include using namespace std; class F {
int
n;
int
d;... F(
int
n = 0,
int
d = 1):n(n),d(d) ... //
类型
转
换运算符函数,将当前对象
转
成
double
//
double
operator
double
() operator
java
int
除以
int
_
int
除以
int
得到
double
类型
值
JQuery之动画与特效 显示与
隐藏
show(spped,[callback])与hide(spped,[callback]) speed可选填slow.normal.fast,对应的速度分别为600ms.400ms.200 ... OpenCV3计算机视觉Python语言实现笔记(五) 图像的几何变换...
MFC中CString
转
int
/
double
/TCHAR*
类型
MFC中CString
转
int
/
double
/TCHAR*
类型
CString
类型
转
换 CString 型
转
化成
int
型 把 CString
类型
的数据
转
化成整数
类型
最简单的方法就是使用标准的字符串到整数
转
换例程。 虽然通常你怀疑使用_...
C++ 语言
64,654
社区成员
250,484
社区内容
发帖
与我相关
我的任务
C++ 语言
C++ 语言相关问题讨论,技术干货分享,前沿动态等
复制链接
扫一扫
分享
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++
技术论坛(原bbs)
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
请不要发布与C++技术无关的贴子
请不要发布与技术无关的招聘、广告的帖子
请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下
试试用AI创作助手写篇文章吧
+ 用AI写文章