我用C#编了一个Windows应用程序的计算器,但有时出现精度问题,比如130.3-129.4,应该得0.9,可我的得0.8999999
130.3-131.4应该得-1.1,我的得-1.09999999.不知道是哪方面的问题,各位大哥多多指教。谢谢

解决方案 »

  1.   

    浮点数精度的问题,比如四位有效。
    Text = "" + (130.3 - 129.4).ToString("0.####");
      

  2.   

    要想比较高的精度,你用double试试看。
      

  3.   

    要想精确计算建议使用10进制浮点数类型Decimal
      

  4.   

    Decimal的精度比float精度高,如果要求浮点数的精度高,用这个吧。
      

  5.   

    Decimal不是浮点数类型...浮点数的误差是无法避免的,Decimal是采用牺牲存储的长度来解决小数存储精度的...
      

  6.   

    一开始我用float,2.3-3.4都出这种错误,后来我用的double,2.3-3.4正常了,但像130.3-129.4这种还是不行。
      

  7.   

    用decimal这个类型吧,精度更高,常用于财务方面
      

  8.   

    就是double 也行 float也行 就是用于windows计算器嘛。这两个值类型变量都可用。
      

  9.   

    那是一位小数
    Math.Round(45.367,1) 
    String.Format("{0:N1}",Convert.ToDecimal("0.333333").ToString());
    格式化输出