procedure TForm1.Edit2Change(Sender: TObject);
var
a,b,c,d:double;
begin
a:=strtofloatdef(edit1.Text,0);
b:=strtofloatdef(edit2.text,0);
c:=strtofloatdef(edit4.text,0);
d:=a-b-c;
edit3.text:=floattostr(d);
end;//备注
edit1.text:='26.7';
edit4.text:='5.1';
在edit2.text输入 21.6
在edit3.text中显示在结果为:-1.77635683940025E-15
中断查看变量D的值也是 -1.77635683940025E-15
这个问题真是不解,请高手帮帮忙。
var
a,b,c,d:double;
begin
a:=strtofloatdef(edit1.Text,0);
b:=strtofloatdef(edit2.text,0);
c:=strtofloatdef(edit4.text,0);
d:=a-b-c;
edit3.text:=floattostr(d);
end;//备注
edit1.text:='26.7';
edit4.text:='5.1';
在edit2.text输入 21.6
在edit3.text中显示在结果为:-1.77635683940025E-15
中断查看变量D的值也是 -1.77635683940025E-15
这个问题真是不解,请高手帮帮忙。
没电了怎么判断,这些地方到底是空的,还是数字0呢?
所以,浮点数的0,其实会变成0.000000....X
很正常。
对于浮点数,Math.RoundTo 多用用就好了。
有没有搞错,上次说的意思是“Timer跟多线程是一个意思”。
请全文看一下再说,不要断章取义。
看清楚我这次的东西。
第一个0是你们浆糊脑子里的十进制0,
后面所有的0都是PC里面的二进制0 。请问你们任何一个同学。能告诉我一下,
电脑的最根本除了0和1,还有什么吗?
哦,我知道了,是不是还有“ieee 754”。
难怪不用给某个电子元器件通电,也能知道这个数字是0(十进制)了。
原来靠你们啊。
X表示“最后不会是0,理解成二进制也行,最好是理解成电子元器件的开关”。
农大没有教你们吗?!电脑的根本是电子元器件的开和关,而不是菜地里的五颜六色,没那么多“元”素。说我的理解错误,
那层次高的,请解释一下,什么是浮点数。
(我承认,在学校学的差不多该忘的都忘了。我想,你个书蛀虫也不可能背的那么熟。但是,大致意思,方向的理解,总还存在吧?)
你能告诉我,为什么会出现“精度”这个话题的吗?
为什么我的PC上是1.234……5,而你那边就出来1.234……6?
是因为,你家有754,我家没有754,是哇?
本人上海华理计算机,你想以145分来我校……哦~ 不,来我城市。估计真的连农大的大专也不收。
……
我至少已经提出了我对浮点数的理解。
能不能帮助lz,lz自量。
但是,某些朋友,不晓得是很难读懂我别扭的语言描述,还是处于其他原因。
反正,我到目前还没有见到一个确实反驳掉我说法的理由。
#13楼说的很对,我可以认错,只要我是错的。学习的过程,本来就是不断推翻自己以前所认知的部分。
但是,同时,我很鄙视那些,自己不回答问题,还辱骂别人回复的“高水平”者。
lz有问题,我们回复,我说错了,自然希望有人告诉我。
告诉我是错的,为什么错,我才能有新的认知和自我提高。
可是你看一下seamour & caixiaobai08的回复。
……
嚣张也要有个度。
嚣张也是需要说服力d 。
另外,6楼已经明明白白说了楼主的结果是怎么出来的了,别人还有必要再废话一遍么?您居然还能说“没有见到一个确实反驳掉我说法的理由”,我认为这只有两种可能,要么是水平太差根本看不懂人家说的,要么就是脸皮太厚。btw,我只是业余玩玩编程的,cs不是我的专业。现在所谓科班出身的连这种基础知识都搞不明白,可见高考扩招的失败,真是什么样的人都能上大学。
跟北大清华的研究生探讨问题真累。
人家太专业了专业到“搜一下”都出来了。btw,我是在尝试解释“精度”是怎么出来的。而不是“浮点数跟精度的关系”。
现在又说这说那的死鸭子嘴硬,事实就是:你自己满嘴跑火车,讲错了之后还不许别人说。脏话骂完了一转眼就成好人了,你还真把别人当sb啊?