鱼C论坛

 找回密码
 立即注册
查看: 3623|回复: 6

double和float精度问题

 关闭 [复制链接]
发表于 2011-6-12 19:26:39 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
#include <iostream>
main()
{
using namespace std;

double double_j=1.0/3.0;
float float_j=1.0/3.0;
cout<<"double_j:"<<double_j<<endl;
cout<<"float_j:"<<float_j<<endl;
return 0;
}
RT 我想比较double和float的精度 可是输出结果的精度为什么是一样的啊 求解!
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
 楼主| 发表于 2011-6-12 20:11:53 | 显示全部楼层
- -!求解啊- -!:Q
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
发表于 2011-6-13 12:17:49 | 显示全部楼层
像C中的printf和C++中的cout都具备一种能力:能将某个给定的数输出到任意精度。
显然,这里涉及到了2个“精度”的概念:
1)数字本身的精度
2)printf、cout的输出精度
当2)中的精度大于1)的时候,多输出的那些位是没有任何意义的。

因此LZ这个只是看到了cout输出的精度(概念2),事实上对于浮点数,cout输出的精度默认都是小数点后6位。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
 楼主| 发表于 2011-6-13 20:39:37 | 显示全部楼层
额 昨天晚上半夜的时候也明白了 默认只能输出小数后面六位! 我想问下如果想保留小数点后面的更多位该怎么做?!
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
发表于 2011-6-13 20:52:08 | 显示全部楼层
#include<iomanip>
#include<iostream>
int main(){
        using namespace std;
        double double_j=1.0/3.0;
        float float_j=1.0/3.0;
        cout<<"double_j:"<<setprecision(12)<<double_j<<endl;
        cout<<"float_j:"<<setprecision(3)<<float_j<<endl;
        return 0;        
}
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
发表于 2011-6-14 09:32:26 | 显示全部楼层
我帮楼主谢谢辛勤的版主。感谢你辛勤的劳动~~开心快乐!
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
 楼主| 发表于 2011-6-14 09:57:18 | 显示全部楼层
版主偶像啊- -~!  谢谢了辛苦了- - :lol
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-9-21 06:29

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表