printf输出时什么情况下四舍五入?

#include<stdio.h>
#include<math.h>
int main()
{
   double a=5.60112034;
   int b=1;
 //  scanf("%lf",&a);
   printf("%lf\n",a+b);
   printf("%.0lf\n",a+b);//四舍五入出现
   printf("%8.3lf\n",a+b);
   return 0;

}
程序结果:6.6011207    6.601输出实数的时候会有四舍五入。不指定小数位数时按系统默认位数自动四舍五入;指定小数位数时按指定值四舍五入。

注意:
%f和%lf分别是float类型和double类型用于格式化输入输出时对应的格式符号。其中:float,单精度浮点型,对应%f.double,双精度浮点型,对应%lf.

在用于输出时:float类型可以使用%lf格式,但不会有任何好处。double类型如果使用了%f格式可能会导致输出错误。

在用于输入时:double 类型使用了%f格式,会导致输入值错误。float类型使用double类型不仅会导致输入错误,还可能引起程序崩溃。
 

原文地址:https://www.cnblogs.com/cr-zj/p/8848327.html

时间: 2024-10-27 08:15:49

printf输出时什么情况下四舍五入?的相关文章

如果在安装32位oracle 客户端组件时的情况下以64位模式运行,将出现问题

今天要写个程序,环境是win7+ vs2008+ oracle.首先得保证能连接到数据库.确认代码是没有问题的,但是拿过来直接.报错: “尝试加载 Oracle 客户端库时引发 BadImageFormatException.如果在安装 32 位 Oracle 客户端组件的情况下以 64 位模式运行,将出现此问题” 最后发现问题,在网上找到一个解决办法 点击你的项目,右键-->属性,弹出窗口,选 生成,看到“平台”,下拉框中选择 x64 然后就ok了

c语言的printf输出浮点数的一些问题

在printf时:如果以%f格式输出,将输出8个字节(scanf输入时,%f是4个字节) 在参数入栈时如果是float型或者double型 直接入栈8个字节,此时输出及后续输出都没问题 但如果参数小于8个字节且不是float型:比如int   shor int  ,就会扩展符号位,成为4个字节再入栈,但是输出的是8个字节,所以会读取其他参数的入栈结果 #include <stdio.h> #include <stdlib.h> #include <string.h> i

尝试加载 Oracle 客户端库时引发 BadImageFormatException。如果在安装 32 位 Oracle 客户端组件的情况下以 64 位模式运行,将出现此问题。

从10G开始,Oracle提供了一个较为轻量级的客户包,叫做Instant Client. 将它安装好后,就不用再安装庞大的Oracle Client了. 这样一来,只要客户端下载Instant Client,直接解压,设置Path就ok了.具体设置如下:1.下载32位Oracle InstantClient 2.将Oracle InstantClient解压到某目录 3.打开PL/SQL,在perference里面设置OCI Library和Oracle_home,例子如下:        

SQLite.dll混合模式程序集是针对“v2.0.50727”版的运行时生成的,在没有配置其他信息的情况下,无法在 4.0 运行时中加载该程序集。

其他信息: V5.7.4.4 Can't find the System.Data.SQLite.dll more info : 混合模式程序集是针对"v2.0.50727"版的运行时生成的,在没有配置其他信息的情况下,无法在 4.0 运行时中加载该程序集. 解决办法,web.config 添加

C#连接Sqlite 出现:混合模式程序集是针对“v2.0.50727”版的运行时生成的,在没有配置其他信息的情况下,无法在 4.0 运行时中加载该程序集。的解决方案

C#连接Sqlite 出现: 混合模式程序集是针对“v2.0.50727”版的运行时生成的,在没有配置其他信息的情况下,无法在 4.0 运行时中加载该程序集.的解决方案 C#连接sqlite数据库代码: 1 using System; 2 using System.Collections.Generic; 3 using System.ComponentModel; 4 using System.Data; 5 using System.Data.SQLite; 6 using System.D

【转】Sqlite 混合模式程序集是针对“v2.0.50727”版的运行时生成的,在没有配置其他信息的情况下,无法在 4.0 运行时中加载该...

开发环境: vs2010+.net framework 4.0+ System.Data.SQLite.DLL (2.0)今天在做Sqlite数据库测试,一运行程序在一处方法调用时报出了一个异常 混合模式程序集是针对“v2.0.50727”版的运行时生成的,在没有配置其他信息的情况下,无法在 4.0 运行时中加载该程序集 其调用的方法是从sqlite数据库中获取原来已经使用过的数据库连接,当时也没注意,就是准备设断点然后单步调试,结果竟然是断点无法进入方法体内,后来仔细看了一下方法体的时候发现了

webservice 尝试加载 Oracle 客户端库时引发 BadImageFormatException。如果在安装 32 位 Oracle 客户端组件的情况下运行,将出现此问题

最近做的项目中,应用服务器迁移到另外一台服务器,操作系统升级为win10,配置好IIS里的应用程序发布网站和Webservice网站后, 客户端程序调用Webservice出错: “尝试加载 Oracle 客户端库时引发 BadImageFormatException.如果在安装 32 位 Oracle 客户端组件的情况下运行,将出现此问题”. 写了个控制台程序,在本机上运行测试,还是出现这个问题: 最开始以为是oracle客户端的问题,重新安装另外一个版本的客户端,运行程序还是出现这个错误.

五种情况下会刷新控件状态(刷新所有子FWinControls的显示)——从DFM读取数据时、新增加子控件时、重新创建当前控件的句柄时、设置父控件时、显示状态被改变时

五种情况下会刷新控件状态(刷新控件状态才能刷新所有子FWinControls的显示): 在TWinControls.PaintControls中,对所有FWinControls只是重绘了边框,而没有整个重绘这些FWinControl子控件.那么什么时候才整个重绘全部FWinControls呢?这时候,就不是一个单纯的WM_PAINT来解决控件重绘的问题了,而是这个TWinControl.UpdateShowing函数: procedure TWinControl.UpdateShowing; v

&lt;VS2010&gt;混合模式程序集是针对“v2.0”版的运行时生成的,在没有配置其他信息的情况下,无法在 4.0 运行时中加载该程序集

在把以前写的代码生成工具从原来的.NET3.5升级到.NET4.0时,将程序集都更新后,一运行程序在一处方法调用时报出了一个异常: 混合模式程序集是针对“v2.0.50727”版的运行时生成的,在没有配置其他信息的情况下,无法在 4.0 运行时中加载该程序集 其调用的方法是从sqlite数据库中获取原来已经使用过的数据库连接,当时也没注意,就是准备设断点然后单步调试,结果竟然是断点无法进入方法体内,后来仔细看了一下方法体的时候发现了一个问题,就是现有的System.Data.Sqlite这个数据