关于print("%f ",5)输出结果为0.000000

print("%f ",5)输出结果为0.000000
print("%,d ",5.01)输出1889785610 ,这两个输出的结果怎么理解,求指点

c++

4个回答

整数和浮点数的内部存储是不同的,你把整数当浮点数解析,比如5,那么阶码、尾数对应的数据存储都是0,所以结果是0
相反,5.01你当作整数去解析,那么阶码、尾数这些位都是有值的,所以结果是一个很大的整数。
具体你可以看IEEE 754浮点数规范。

http://blog.163.com/dsp_lnint/blog/static/10316743420103154327115/

看这个例子,同样0x00280000,如果理解为整数,它是十六进制的280000,一个很大的数
理解为浮点数是 3.6734198463196484624023016788195e-39 一个很小的数

0x00280000(real*4)

转换成二进制

00000000001010000000000000000000

符号位 指数部分(8位) 尾数部分

0 00000000 01010000000000000000000

符号位=0;因指数部分=0,则:尾数部分M为m:

0.01010000000000000000000=0.3125

该浮点数的十进制为:

(-1)^0*2^(-126)*0.3125

=3.6734198463196484624023016788195e-39

xugesen1989
xugesen1989 好的,非常感谢
大约 4 年之前 回复

写为printf(),注意最后的f。

xugesen1989
xugesen1989 啊,写错了,谢谢指正
大约 4 年之前 回复
Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
其他相关推荐
printf("%f",5)的输出结果
#include <stdio.h> void main() { printf("%f\n",5); printf("%d\n",5.01); printf("%f\n", (float)5); printf("%f\n", 5.f); } printf函数不会进行任何类型转换,它只是从内存中读出你所提供的元素的值(按照%d,%f...
新手问题,printf结果为0.000000
[code=c]rn double test = 27771428571.42857;rn printf("test=%f\n",test);rn double test1 = 10e-8;rn printf("test1=%f",test1);rn[/code]rn代码如上rntest打印出来没有问题rntest1打印出来变为0.000000,如果改为double test1 = 10e-7;可以打印出0.000001rn求教大神为什么
存储过程print无法输出结果?
declare @FJ_des varchar(5000) rndeclare @Des varchar(5000) rndeclare @SQ_id varchar(200) rndeclare @pcid int rndeclare @count int rndeclare @i int rndeclare @j int rndeclare @R_str varchar(10) rndeclare @SQ_id1 varchar(2) rndeclare @SQ_id2 varchar(2) rndeclare @desName varchar(50) rndeclare @LS_des varchar(5000) rndeclare @des_count int rndeclare @SQ_des1 varchar(20) rndeclare @SQ_des varchar(8000) rndeclare @SQ_des2 varchar(5000) rndeclare @bigpic varchar(500) rndeclare @smallpic1 varchar(500) rndeclare @smallpic2 varchar(500) rndeclare @pid int rnrndeclare @desTB table rn( rnid int identity, rnpid int, rndesName varchar(50), rndes varchar(5000) rn) rnrnset @pid=32559 rnselect top 1 @pcid=pcid from productList where pid=@pid rnrnif exists(select id from DescriptionSpecialityProduct where pid=@pid) rn begin rn select @SQ_id=SQ_id,@FJ_des=spDes,@count=SQ_count rn from DescriptionSpecialityProduct rn where pid=@pid rnrn while @count>=1 rn begin rn set @i=charindex(',',@SQ_id) rnrn set @R_str=left(@SQ_id,@i) rnrn set @j=charindex('-',@R_str) rnrn set @SQ_id1=left(@R_str,@j-1) rn--print @SQ_id1 rn set @SQ_id2=replace(right(@R_str,@i-@j),',','') rn--print @SQ_id2 rnrn set @SQ_id=right(@sq_id,len(@sq_id)-@i) --replace(@SQ_id,@R_str,'') rnrn set @count=@count-1 rnrn set @LS_des=' '+(select description from DescriptionProduct where pcid=@pcid and dcid=@SQ_id1 and dcid_id=@SQ_id2) rn set @desName=(select DesClassName from DescriptionClassList where dcid=@SQ_id1) rn set @Des=(select description from DescriptionProduct where pcid=@pcid and dcid=@SQ_id1 and dcid_id=@SQ_id2) rn--print @Des rn if exists(select id from @DesTB where desName=@desName) rn update @DesTB set des=des+@LS_des where desName=@desName rn else rn insert @DesTB(pid,desName,des) values(@pid,@desName,@Des) rn end rn end rn--select @Des as des rn --select count(*) from @DesTB rn set @SQ_des1='' rn set @SQ_des2='' rn set @SQ_des='' rn set @des_count=(select count(*) from @DesTB) rnif @des_count <>0 rn begin rn while @des_count>=1 rn begin rn set @SQ_des1=(select desName from @DesTB where id=@des_count) rn set @SQ_des2=(select des from @DesTB where id=@des_count) rn set @SQ_des=' '+@SQ_des2+' '+@SQ_des rn set @des_count=@des_count-1 rn end rnprint '==========' rn print @SQ_des rnprint '-=======' rn if @FJ_des is null or @FJ_des='' rn set @SQ_des=' '+@SQ_des+' ' rn else rn set @SQ_des=' '+@SQ_des+' '+@FJ_des+' ' rnrn end rnelse rn set @SQ_des='NO' rnrnrnselect pid,productid,pname,model,pmid,psid,stylename,pcid,classname,coid,company,isout,maxOrderNum,@SQ_des as spDes rnfrom V_productlist rnwhere pid=@pid rnrn(1 row(s) affected) rnrnrn(1 row(s) affected) rnrnrn(1 row(s) affected) rnrnrn(1 row(s) affected) rnrnrn(1 row(s) affected) rnrnrn(1 row(s) affected) rnrnrn(1 row(s) affected) rnrnrn(1 row(s) affected) rnrn========== rn rn-======= rnrn(1 row(s) affected) rnrn为何上下两行=符号都可以输出,@SQ_des变量中的内容不能输出 rn本地查询分析器中可以输出结果,服务器中把变量放入循环内也可以单个输出,放到循环外就没内容输出?
C语言为什么int用%f输出是0.000000?
[code=C/C++]printf("%f",2);[/code]rn我是想让这个整形数“2”按照浮点数输出。rn我猜测输出应该是2.0一类的浮点数,可是为什么输出是0.0000000?rn如果把代码改成:rn[code=C/C++]printf("%f",(float)2);[/code]rn就可以了,输出就是2.00000rnrn这是为什么呢?
关于输出print
请解答out.println和pwout.println有什么不同?
关于print输出的问题
System.out.printrnSystem.out.printlnrnSystem.out.printfrn三个的区别是什么?rn请教各位大侠!rn谢谢!
printf("%d",5.01);和printf("%f",5);会输出什么结果?
printf("%d",5.01); //这个是零rnprintf("%f",5); //这个是非常大的数rn为什么?
如何将Print 1/2的值“.5”输出为“0.5”?
请勿给出什么偏门的方法,我记得好像是用Format函数,但是弄不出来。哪位帮帮忙?
f=11115.3 输出为11115.299805
程序如下:rn#includernvoid main()rn rn float f=11115.3;rn printf("%f\n",f); rnrn执行的结果不是11115.300000rn 而是11115.299805rn这是什么原因造成的?
printf,sprintf中的%f,总是输出0.000000,而不是想要的结果。
unsigned char DisplayBuffer[10][20];rnfloat Tem=229.5;rnsprintf((unsigned char *)&DisplayBuffer[7],"%s%f","温度:",Tem);rn结果输出的是“温度:0.000000”rnrn另外,在printf("tem:%\n",Tem); 打印出来的也是0.000000,求大神们的指点~~rnrnPS,编译环境linux
正则表达式求解[2]=[3]+[5] 返回f(2)=f(3)+f(5) f为一个方法名
如题,把方括号里面的内容替换为方法名中的参数,然后进行判断 是否为真 进而作进一步的操作。rnrn谢谢。
30/20输出居然是0.000000
#include "stdafx.h"rn#includernrnint _tmain(int argc, _TCHAR* argv[])rnrn float f=30/20;rn printf("%f",sizeof(f));rn getchar();rn return 0;rn[img=https://forum.csdn.net/PointForum/ui/scripts/csdn/Plugin/003/monkey/0.gif][/img]
为什么输出b总是0.000000?
 #include int main() {     int a;     double b;     scanf("%d,%lf",&a,&b);     printf("Get:%d,%f\n",a,b);     return 0; }
将print输出结果保存到txt文件
years = [1,2,3,4,5,6] f = open(&quot;c.txt&quot;, 'w+') dicte=[] cd={} for i in years: print(i) years.remove(i) b=years dicte=b cd[i]=dicte print(dicte) print(years, file=f) print(cd...
为什么print和cout输出的结果不一样!!!
在做编译原理的rn[color=#FF0000]构造标识符、整数的词法分析器 [/color]rn下面是C++代码rn当输入 123 123 123 asd asd 123rnrn运行的结果是rn[img=http://hi.csdn.net/attachment/201003/25/3709811_1269519578dwdd.jpg][/img]rnrnrn但这不是我想要的结果rnrnrnrnrn[code=C/C++]rn#include "iostream.h" rn#include "string.h" rn#include "conio.h" rn#include "ctype.h" rnchar prog[80]='\0',rn token[8]; rnchar ch;rnint syn, rn n,rn sum, rn m,p=0; rnchar rwtab[6][100]="begin","if","then","while","do","end";rnrnrnrnvoid scaner()rn m=0;rn sum=0;rn for(n=0;n<8;n++)rn token[n]='\0';rn ch=prog[p++];rn while(ch==' ')rn ch=prog[p++];rn if(isalpha(ch)) rn while(isalpha(ch)||isdigit(ch)) rnrn rn token[m++]=ch;rn ch=prog[p++];rn rn token[m++]='\0';rn ch=prog[p--];rn syn=10;rn for(n=0;n<6;n++)rn if(strcmp(token,rwtab[n])==0) rn syn=n+1;rn break;rn elsern if(isdigit(ch)) rn rn while(isdigit(ch)) rn rn sum=sum*10+ch-'0';rn ch=prog[p++];rn rn ch=prog[p--];rn syn=11;rn rn rn elsern switch(ch)rn rn case'#':syn=0;token[0]=ch;break;rn default:syn=-1;rn rnmain()rnrn rn rnp=0;rnrn cout<<"\n请输入字符串\n";rn do rn cin>>ch;rn prog[p++]=ch;rn while(ch!='#');rn rnp=0;rnrn dorn scaner();rn switch(syn)rn case 11: cout<<"("<
print输出
在Swift 3.0之后,就抛弃了以前版本的println,只使用print来进行控制台的输出。在这里就简单说明一下常用的print输出方式。 1、最常用的是直接使用 print("hello, swift") 2、需要同时输出多个参数时,使用逗号(,)分割 print("hello", " swift") 3、若需要输出一组字符串中带有某个甚至某些变量值时,可以使用字符串斜插的
以下程序段的输出结果为()。以下程序段的输出结果为()。
以下程序段的输出结果为()。nfor(i=4;i>1;i--) for(j=1;j
关于print 5*5\5/5,有了重大发现?
优先级顺序我是知道的,先算5*5在算/5,然后再算\5,是这样的吧?可是问题来了,为什么我在vb的立即窗口中计算它是等于25呢?照这样来算应该是1才对的啊,所以大家如果方便的话麻烦您教下我哈,一般不是遇到了自己想不透的事我是不敢来这里的。
关于vb print输出问题
Module Module1nn Sub Main()n run1()n End Subn '第三题n Private Sub run1()n Dim a, b, c As Integern Dim w, x, y, zn a = 5 : b = 4 : c = 3n w = a + 3 * cn x = a ^ 2 / 6n y = a / 2 * 3 / 2n z = a Mod 3 + b ^ 3 / c \ 5n Print("第一题:" & w & "第二题:" & x & "第三题:" & y & "第四题:" & z)n End SubnEnd Modulennn为什么会提示错误,是不是print用错,print输出什么也不行啊
keil中printf输出浮点型全是0.000000
vs2012平台:rn#include rnint main()rnrnsystem("cls");rnint f=10;rnprintf("%f\n",(float)f);rnsystem("pause");rnreturn 0;rnrn结果:rn10.000000rn[img=https://img-bbs.csdn.net/upload/201809/28/1538138287_464531.png][/img]rnkeil51平台:rn串口输出(串口初始化之类的都正常,输出整数没问题,就是小数有问题)rn代码:rnint f=10;rnprintf("%f\n",(float)f);rn结果:rn0.000000rn[img=https://img-bbs.csdn.net/upload/201809/28/1538138303_699043.png][/img]
print 100 and true 结果为100 print 100 or true 结果为-1,为什么?
谢谢
为什么用cout和print的输出不同
rn[code=C/C++]rnrnstring NumToStr(int num)rnrn string str;rn int i;rn i=0;rn while(num != 0)rn rn str[i]=(num-num/10*10)+48;rn num/=10;rn i++;rn rn reverse(str.begin(),str.end());rn rn return str;rnrnrnint main()rnrn int num;rn string str;rn while(scanf("%d",&num)!= EOF)rn rn str=NumToStr(num);rn printf("%s\n",str.c_str());rn cout<
SQLServer 查询消息输出不全 print输出结果不全
我使用的是Microsoft SQL Server Management Studio,在调试的时候,print结果不全 今天调试一个存储过程,由于语句太长,导致控制台无法打印完全,查阅资料,没有发现有调整设置的,于是巧取: 将其输出为xml SELECT '你的sql' FOR XML PATH('名字') 如下代码 -- 执行 SELECT @selectStr + @f...
Dataframe的数据print输出 显示为...省略号
原文链接:http://30daydo.com/article/165 例如: def get_achievement(self): fc=ts.forecast_data(2016,4) print fc   上面这个简单的代码意思是获取已经发布的2016年第4季度的业绩预告的上市公司。   默认输出的结果是:
将字符转换为小写并加5后输出结果
程序实现目标: 输入一个字符,将字符转换为小写,将其对应的ASCII值加5后,输出结果。程序要求:若其值加5后的字符值大于’z’,将其转换成从a开始的字符。输入:‘A’输出:‘f’package 华为机试题;/** * @author Hutongling * * @time:2017年4月8日 下午9:41:52 */ public class 将字符转换为小写并加5后输出结果 {
下面的程序输出的结果为
#include "stdio.h"rnmain()rnrn int a=-1;rn printf("%d,%o,%u\n",a,a,a);rnrn怎么算的啊,-1知道。177777是八进制,怎么算出来的呢。65535这个结果,也不知道怎么算出来的。希望得到详细的过程
为什么输出结果为$23????
#include rn#include rnusing namespace std;rnclass Bookrnrnpublic:rn char bookname[100];rn double price;rn int number;rnpublic:rn Book(char*,double,int);rn void display();rn void borrow();rn void restore();rn;rnBook::Book(char *name,double x, int y)rnrn string bookname =name;rn price=x;rn number=y;rnrnvoid Book::display()rnrn cout<
c++输出结果为乱码
代码如下rnrn#include rnusing namespace std;rnconst int Books=1;rnconst char *month[12]="January","February","March","April","May","June","July","August","September","October","November","December",;rnint main()rnrn int Data[Books][12];rn double total[Books];rn int Book;rn for(int i=0;i<12;i++)rn rn cout<<"请输入"<>Data[Book][i];rn rnrn cout<<"这一年的销售量:"<
list to print 的结果调整?
SET PRINTER font'',14rnset head offrnlist to print f1+f2+f3 打印的字段怎样上下对齐,或者居中? rn 或者缩小字段间距? rn rn
print 没有结果
下面语句 为什么我print没有结果啊?rnrnDECLARE @WHSCODE VARCHAR(20),@ITEMCODE VARCHAR(30),@Codebars varchar(30),@datefrom datetime,@dateto datetimernSET @DATEFROM='2010-01-01'rnSET @DATETO='2011-01-01'rnSET @WHSCODE='1-AZJT01'rnSET @ITEMCODE='A'rndeclare @sql nvarchar(4000)rnset @sql='s'rndeclare @cur varchar(4000) --保存动态游标语句,实现物料模糊查询rndeclare @type nvarchar(4)rnset @cur=N'rndeclare cur1 cursor for --获取型号列值,作为分组依据rn select distinct m.型号rn from rn (SELECT tt.DocDate,tt.DocEntry, tt.DocNum, tt.Comments,d.ItemCode,d.Quantity,left(T4.[BatchNum],3) AS COLORCODErn ,SUBSTRING(T4.[BatchNum],4,2) AS ''型号'',d.WhsCode,tt.U_DJLX,tt.U_JYLX,d.LineTotal,D.ObjType,D.LineNumrn FROM dbo.OIGN AS tt rn INNER JOIN dbo.IGN1 AS d ON tt.DocEntry = d.DocEntry AND tt.CurSource = ''C''rn inner join ibt1 T4 ON T4.BaseType = D.ObjType AND D.DocEntry=T4.BaseEntry AND D.LineNum=t4.BaseLinNumrn where isnull(SUBSTRING(T4.[BatchNum],4,2),'''')<>'''' and tt.docdate between 'rn+convert(varchar(20),@datefrom,112)+N' and '''+convert(varchar(20),@dateto,112)rn+N''') M rn left join OITM p on p.ITEMCODE=m.itemcode rn inner join owhs t5 on M.whscode = t5.whscodern where M.whscode ='+@whscode+N' and M.ItemCode like '''+@itemcode+N'%'''+N'rnrnopen cur1 rnrnfetch next from cur1 into '+@type+'rnwhile @@fetch_status=0rnbeginrn set @sql='+@sql+'['+@type+'],'+'rn fetch next from cur1 into '+@type+'rnendrnset @sql=stuff('+@sql+',1,1,'''')rnset '+@sql+'=left('+@SQL+',len('+@SQL+')-1)rnclose cur1rndeallocate cur1'rnrnPRINT @currnrnrn为什么我print后没有结果啊?
关于输出结果的问题
以下程序的输出结果是什么?rnmain()rnrn char c1='6',c2='0';rnprintf("%c,%c,%d,%d\n",c1,c2,c1-c2,c1+c2);rnrnrnA:因输出格式不合法,输出错误信息。rnrnB:6,0,6,102rnrnC:6,0,7,6rnrnD6,0,5,7rnrn正确答案是B,谁能具体说说为什么是B啊?rn谢了。
关于查询结果输出??
在asp里怎样在列名(字段名)不知道的情况下输出查询结果,就像sql server 里返回所有行那样
关于sp_executesql输出结果
[code=SQL]rndeclare @Sql nvarchar(500)rndeclare @SysOrderNo intrndeclare @ShortName varchar(30),@Spec varchar(30),@Spec1 varchar(30),@Spec2 varchar(30),@Spec3 varchar(30),@Spec4 varchar(30)rndeclare @DataBaseName varchar(30)rnSet @DataBaseName='MDFData'rnSet @SysOrderNo=5rnrnSet @Sql='Select @ShortName=ShortName,@Spec=Spec,@Spec1=Spec1,@Spec2=Spec2,@Spec3=Spec3,@Spec4=Spec4 From '+@DataBaseName+'.dbo.ORDERDETAIL '+' Where SysOrderNo='+cast(@SysOrderNo as varchar(10))rnSelect @Sqlrnexec sp_executesql @Sql,N'@ShortName varchar(30) output,@Spec varchar(30) output,@Spec1 varchar(30) output,@Spec2 varchar(30) output,@Spec3 varchar(30) output,@Spec4 varchar(30) output',@ShortName output,@Spec output,@Spec1 output,@Spec2 output,@Spec3 output,@Spec4 outputrnSelect @ShortName,@Spec,@Spec1,@Spec2,@Spec3,@Spec4rn[/code]rnrn代码执行后结果框里显示一行@ShortName,@Spec,@Spec1,@Spec2,@Spec3,@Spec4记录rn问题在于:rn1程序这里只能用exec(@Sql)的形式rn2要取出返回值rnrn单纯执行SQL语句返回【3】条记录,但是用exec sp_executesql却只有【1】条,帮助文档里说可以用游标,但是怎么弄都不对,求帮助
关于变量类型及输出结果
#include&amp;lt;stdio.h&amp;gt; int main() {     float a,b;     a=123456.789e5;//意思是a=123456.789*10-²     b=a+20;  //会出现溢出(舍入误差)     printf(&quot;%f\n&quot;,a);     printf(&quot;%f\n&quot;,b);     printf(&quot;%f\n&quot;,1.0/3*3);...
关于结果输出的问题
小弟我在Memo里面输出结果,rn有若干行列rn如何使没列数值的首字符对齐rn或者末字符对齐?
输出为本身的C程序 关于char *f ??
请看这个程序rnrnchar*f="char*f=%c%s%c;%cmain()printf(f,34,f,34,10,10);%c"; rnmain()printf(f,34,f,34,10,10);rnrn其输出结果为本身。。rnrn我想请问一下前面那个定义的char *f 是什么??rnrn谢谢rn
JUST PRINT输出HPG
JUST PRINT输出HPG
print 输出对齐问题
[img=https://img-bbs.csdn.net/upload/201606/25/1466818243_94697.png][/img]rnrnrn利用存储过程以及游标输出时,怎么对齐,让排版更好看。
VB Print方法输出
VB Print方法输出 VB Print方法输出
输出工具库Print
public class Print{ public static void print(Object obj){ System.out.println(obj); } public static void print(){ System.out.println(); } public static void printnb(O
相关热词 c# stream 复制 android c# c#监测窗口句柄 c# md5 引用 c# 判断tabtip 自己写个浏览器程序c# c# 字符串变成整数数组 c#语言编程写出一个方法 c# 转盘抽奖 c#选中treeview