当前位置:首页
开发技术指南» 文章正文
    引言:
 

 

    摘要: http://expert.csdn.net/expert/topic/1713/1713335.xml?temp=.9844782 ......
 ·ado系统配置要求    »显示摘要«
    摘要: 好像我的所有ado的实例全部不能运行,总是报告runtime error,莫非系统少安装了什么吗??? 我用的是xp系统,sqlserver2000英文版,vc6中文版, ado目录下有15.dll ,(还有20,25.tlb) 需要什么其他配置吗???? 谁能告诉我!! ......


这是VB的bug吗我不确定

先说明数据库为sql   server   ,allcharge   为float型,RsTT!allcharge的值为119.935  
   
                          Ac   =   Int((RsTT!allcharge)   *   100   +   0.5)   /   100                 四舍五入  
                          Debug.Print   Ac  
   
  结果为:   119.93

NO.1   作者: yuhaii

真的呀?   我试了试怎么   是   119.94   呀?

NO.2   作者: qingming81

119.935   *   100   =11993.5  
  11993.5   +   0.5   =   11994  
  int(11994)   =11994  
  11994/100   =119.94  
  你说是它等于什么?

NO.3   作者: Quady515

Round函数  
               
  描述  
   
  返回一个数值,该数值是按照指定的小数位数进行四舍五入运算的结果。  
   
  语法  
   
  Round(expression   [,numdecimalplaces])  
   
  Round函数语法有如下几部分:  
   
  部分                                 描述    
  expression                     必需的。要进行四舍五入运算的数值表达式。    
  numdecimalplaces         可选的。数字值,表示进行四舍五入运算时,小数点右边应保留的位  
                                          数。如果忽略,则Round函数返回整数。    
 

NO.4   作者: DieGhost

对不起,我没看清楚你的问题!抱歉!

NO.5   作者: caiyunsen1980

我也试了,结果如楼主所说,真有点想不通

NO.6   作者: Talent2001k

幅点是这样的。。。

NO.7   作者: xo2000

我试了一下,应该这么解释:  
   
  在  
  Ac   =   Int((RsTT!allcharge)   *   100   +   0.5)   /   100                 四舍五入  
  Debug.Print   Ac  
   
  中,RsTT!allcharge的数据类型如楼主所说是float型,  
  当它在vb自动中会转换为vb中的Single   类型,这样得到的   Ac   就是   119.93了,  
  如果使得转换成   Double   型,Ac   就是   119.94了。  
  这个问题应该时vb对于数据类型的默认转换造成的。  
   
 

NO.8   作者: pinelee

主要是浮点问题造成的,因为计算机是以二进制方式运算的,  
  所以float型存储的值是近似值,不要认为是加法和乘法就不会有那种近似值出现  
  要知道计算机是二进制运算的。  
  其他的呢,xo2000(平凡人生)   都说了,我也就不罗嗦了

NO.9   作者: csdngoodnight

 
   
   
   
   
   
  pinelee(我心依旧)   说的对,不用大惊小怪的,以前有个这样的帖子,很详细的。

NO.10   作者: Leftie

Ac   =format(RsTT!allcharge,"standard")  
  Debug.Print   Ac  
 

NO.11   作者: rappercn

计算机中浮点数是离散分布的。所以绝大多数的数只能以一个接近它的数来表示,接近的程度依赖于数的精度。例如   0.1就可能表示为   0.0999999999...   或   0.1000000001...   由于存在精度上的误差就出现你说讲到的现象。8.28725321453883   和   8.28725321453882   在计算机中的表示可能存在误差,所以结果存在误差就不奇怪了。8.2872   -   8.2871   =0.0001   和   9.99999999997669E-05   只相差   0.0000000000000002331   已经很精确了。    
          用浮点就是这样!    
          由于上述原因,一般在比较浮点数一般不使用等号。也就是说,不使用8.2872   -   8.2871   =0.0001这样的形式,而是看两个浮点的差的绝对值是否非常接近零,如Abs(8.2872   -   8.2871   -   0.0001)   <   1e-10就认为8.2872   -   8.2871   =0.0001了。

NO.12   作者: hansong_ll

同意   rappercn(rapper)  
  正是因为浮点数的问题,取出来的值可能是119.9349999.......


    摘要: 我的jb8的file--new---web项目中,只有applet可用,其他都是灰色的。 但我运行其他的例程,有的web项目都可用。有的不可用。 各位大虾帮忙。 详细操作:我先建了一个project之后建了一个new--class 再之后想file--new--web--web application,只有applet可用,其他都是灰色的. ......
» 本期热门文章:

©2000-2007 All Rights Reserved. 最佳浏览:1024X768 MSIE