鱼C论坛

 找回密码
 立即注册
查看: 4027|回复: 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的精度 可是输出结果的精度为什么是一样的啊 求解!
小甲鱼最新课程 -> https://ilovefishc.com
 楼主| 发表于 2011-6-12 20:11:53 | 显示全部楼层
- -!求解啊- -!:Q
小甲鱼最新课程 -> https://ilovefishc.com
发表于 2011-6-13 12:17:49 | 显示全部楼层
像C中的printf和C++中的cout都具备一种能力:能将某个给定的数输出到任意精度。
显然,这里涉及到了2个“精度”的概念:
1)数字本身的精度
2)printf、cout的输出精度
当2)中的精度大于1)的时候,多输出的那些位是没有任何意义的。

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

本版积分规则

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

GMT+8, 2025-7-15 05:53

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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