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
这个问题真是不解,请高手帮帮忙。

解决方案 »

  1.   

    edit3.text := FormatFloat('##.00', d);
      

  2.   

    浮点数是因为PC是没有绝对的0的,1010嘛,0就是没电了。
    没电了怎么判断,这些地方到底是空的,还是数字0呢?
    所以,浮点数的0,其实会变成0.000000....X
    很正常。
    对于浮点数,Math.RoundTo 多用用就好了。
      

  3.   

    ieee 754浮点数不但能表示0,还能表示+0和-0上次说“Timer就是多线程”的是不是也是你?csdn 层次低的很大原因就是存在大量的菜鸟,自己搞不清楚就敢满嘴跑火车到处乱讲。而且因为整体的水平低,很多时候没人指出来,所以整个站就维持在一个低层次的以讹传讹的状态
      

  4.   

    哦~ 又是你们几个SB?
    有没有搞错,上次说的意思是“Timer跟多线程是一个意思”。
    请全文看一下再说,不要断章取义。
    看清楚我这次的东西。
    第一个0是你们浆糊脑子里的十进制0,
    后面所有的0都是PC里面的二进制0 。请问你们任何一个同学。能告诉我一下,
    电脑的最根本除了0和1,还有什么吗?
    哦,我知道了,是不是还有“ieee 754”。
    难怪不用给某个电子元器件通电,也能知道这个数字是0(十进制)了。
    原来靠你们啊。
      

  5.   

    真是白痴,十进制的0和二进制的0有啥差别?你好歹说个大于1的啊。而且你还有个大大的“X”呢,X是几进制的啊,35进制X么?“Timer跟多线程是一个意思”跟原来的表述有啥不一样的,两完全不同的东西哪儿来的一个意思?菜就菜呗,嘴巴还不干净
      

  6.   

    农大毕业吧?还是个只会咬书本的蛀虫。没你挑衅,也没我啥事。跟SB解释一定要字字句句。
    X表示“最后不会是0,理解成二进制也行,最好是理解成电子元器件的开关”。
    农大没有教你们吗?!电脑的根本是电子元器件的开和关,而不是菜地里的五颜六色,没那么多“元”素。说我的理解错误,
    那层次高的,请解释一下,什么是浮点数。
    (我承认,在学校学的差不多该忘的都忘了。我想,你个书蛀虫也不可能背的那么熟。但是,大致意思,方向的理解,总还存在吧?)
    你能告诉我,为什么会出现“精度”这个话题的吗?
    为什么我的PC上是1.234……5,而你那边就出来1.234……6?
    是因为,你家有754,我家没有754,是哇?
      

  7.   

    啧啧,还考究起我是哪毕业的了。不如您说说您是哪儿毕业的,我看看如果当年少参加一两门考试,比如得145分的数学,还能不能去您那种高水平的学校?从您对ieee 754浮点数表示方式的言论来看,贵校的校训之类的应该是“无知就是力量”吧?
      

  8.   

    别嚣张。我只是语文表达能力不强而已。
    本人上海华理计算机,你想以145分来我校……哦~ 不,来我城市。估计真的连农大的大专也不收。
    ……
    我至少已经提出了我对浮点数的理解。
    能不能帮助lz,lz自量。
    但是,某些朋友,不晓得是很难读懂我别扭的语言描述,还是处于其他原因。
    反正,我到目前还没有见到一个确实反驳掉我说法的理由。
    #13楼说的很对,我可以认错,只要我是错的。学习的过程,本来就是不断推翻自己以前所认知的部分。

    但是,同时,我很鄙视那些,自己不回答问题,还辱骂别人回复的“高水平”者。
      

  9.   

    seamour ,iamduo,都不要说了,争来争去没什么意义,到这里是帮别人解决问题的,同时也是对自己知识的验证,有错误就提出,心平气和的,不要恶语相向都安静会,如果谁认为自己有正确的解释就直接说问题好了。
      

  10.   

    哥哥,我也是这样认为的。
    lz有问题,我们回复,我说错了,自然希望有人告诉我。
    告诉我是错的,为什么错,我才能有新的认知和自我提高。
    可是你看一下seamour & caixiaobai08的回复。
    ……
    嚣张也要有个度。
    嚣张也是需要说服力d 。
      

  11.   

    哦,中学的时候上海的学校只听过复旦、同济和交大,不过也都不在我的考虑范围之内。后来有个朋友保不了本校的研又懒得考,只能不远万里推去华东师大凑合了,所以又听过一所。当然这些都不可能去的,不习惯上海人,而且人也不能往低处走嘛。说出错误的观点有什么用啊,本来人家初学者就不太能分辩哪些对哪些错。而且我已经说了,x86/64使用ieee 754浮点数表示,不但能精确表示0还能带符号。这东西又不是一两句话解释清楚的,网上也有大量比较靠谱的中文资料,稍微不那么笨的就知道去搜一下看看是什么,所以恐怕也只有你觉得我没回答吧。
    另外,6楼已经明明白白说了楼主的结果是怎么出来的了,别人还有必要再废话一遍么?您居然还能说“没有见到一个确实反驳掉我说法的理由”,我认为这只有两种可能,要么是水平太差根本看不懂人家说的,要么就是脸皮太厚。btw,我只是业余玩玩编程的,cs不是我的专业。现在所谓科班出身的连这种基础知识都搞不明白,可见高考扩招的失败,真是什么样的人都能上大学。
      

  12.   

    好吧。我承认学历太低,学校太差。
    跟北大清华的研究生探讨问题真累。
    人家太专业了专业到“搜一下”都出来了。btw,我是在尝试解释“精度”是怎么出来的。而不是“浮点数跟精度的关系”。
      

  13.   

    是有人告诉你了啊,而且还不止一个,结果换来了一句“又是你们几个SB”,看不出来“希望有人告诉我”
    现在又说这说那的死鸭子嘴硬,事实就是:你自己满嘴跑火车,讲错了之后还不许别人说。脏话骂完了一转眼就成好人了,你还真把别人当sb啊?