百科问答小站 logo
百科问答小站 font logo



C++ 和Java 的 double 类型都是 8 字节,为何 C++ 存不下 3.1415926 ? 第1页

  

user avatar   pansz 网友的相关建议: 
      

其实这种问题放以前,大神的回答一般就是rtfm,意思大致就是让你滚回去读读文档再来提问。

不过就你这个情况来说,我认为大家还是能给你一些提示:既然你都知道两边的类型都是double,那么你应该意识到,两个double都是ieee754浮点,他们存储的内容是完全一致的。

于是剩下的问题就是输出环节的问题。你可以去查查你用的输出函数的文档,检查如何输出更多位数。

事实上,流式文件输出这套库可能是C++最坑人的环节了吧,现实项目中极少用到,建议你查清楚用法,或者改用其他方式输出。而且考虑到你的目标是跨平台,那么自定义一个输出函数可能会是有必要的。


user avatar   titilima 网友的相关建议: 
      

这个话题有点意思。往小了说,是你不熟悉文档;往大了说,是你在面对“非预期结果”的时候,需要锤炼排错能力。

首先,这是你对这个“非预期结果”的描述:

C++ 存不下 3.1415926 这个数

其实,这个“非预期结果”更客观的描述方法应该是:

cout 输出的 3.1415926 是 3.14159

那么,我们先确认一下——C++ 能否存下 3.1415926?

让我们先抛弃对 cout 的信任,换一个求证角度,比如调试器。

现在,我们确认了:C++ 是能存下 3.1415926 的。

接下来的问题就变成了:为什么 cout 不能完整输出 3.1415926?

如果你有足够的敏感度,你可能会立即猜到这是 cout 的格式控制问题,进而通过查看文档,解决问题。

当然,如果你是新手也没有关系,搜索像“cout 小数位数”这样的关键词,也不难找到真相。




  

相关话题

  如何看待 .NET Native,真能达到 C++ 的性能、C# 的生产效率吗? 
  多个 CPU 操作多线程对主内存中某一共享变量同时进行写入操作可以做到吗? 
  C 语言枚举 end 是做什么用的? 
  网游通信协议如何防止封包篡改? 
  为什么java返回json时用code=0表示成功, 而我观察的php和nodejs都是用1表示成功? 
  Java的语法规则是怎么传播开来的?(如若回答,请看完补充说明)? 
  C++对比其他语言到底难在哪里?有人对C++异常推崇,除了性能优势,还有什么优点,怎么学好C++? 
  unique_ptr 的底层实现是什么样的? 
  为什么 Linux 指针越界时程序会立即被中断,而 Windows 不会? 
  Qt 为什么在桌面应用(Windows 平台)中不流行呢? 

前一个讨论
为什么感觉省级城市以上很容易美食荒漠,而小城市美食往往卧虎藏龙?
下一个讨论
国内没有 4K HDR 片源,买回去一般也只是看看综艺节目,为什么 4K HDR 电视还能卖那么好?





© 2025-02-07 - tinynew.org. All Rights Reserved.
© 2025-02-07 - tinynew.org. 保留所有权利