zoukankan      html  css  js  c++  java
  • 四舍五入问题(粗糙版)

      StringBuilder str = new StringBuilder();
    
                 float hh = 2.345f;
                 float hh2 = 2.355f;
                 double tt1 = 526.955;
                 double tt2 = 526.945;
                 double tt3 = 526.935;
                 decimal ss1 = 4.445M;
                 decimal ss2 = 4.435M;
                 str.AppendFormat("{0}类型为{1},tostring("0.00")计算结果为{2}<br/>", tt1, tt1.GetType(), tt1.ToString("0.00"));
                 str.AppendFormat("{0}类型为{1},tostring("0.00")计算结果为{2}<br/>", tt2, tt2.GetType(), tt2.ToString("0.00"));
                 str.AppendFormat("{0}类型为{1},tostring("0.00")计算结果为{2}<br/>", hh, hh.GetType(), hh.ToString("0.00"));
                 str.AppendFormat("{0}类型为{1},tostring("0.00")计算结果为{2}<br/>", hh2, hh2.GetType(), hh2.ToString("0.00"));
                 str.AppendFormat("{0}类型为{1},tostring("0.00")计算结果为{2}<br/>", ss1, ss1.GetType(), ss1.ToString("0.00"));
                 str.AppendFormat("{0}类型为{1},tostring("0.00")计算结果为{2}<br/>", ss2, ss2.GetType(), ss2.ToString("0.00"));            
    
                 str.AppendFormat("{0}类型为{1},Math.Round计算结果为{2}<br/>", hh, hh.GetType(), Math.Round(hh, 2));
                 str.AppendFormat("{0}类型为{1},Math.Round计算结果为{2}<br/>", hh2, hh2.GetType(), Math.Round(hh2, 2));
                 str.AppendFormat("{0}类型为{1},Math.Round附加,计算结果为{2}<br/>", hh, hh.GetType(), Math.Round(hh, 2, MidpointRounding.AwayFromZero));
                 str.AppendFormat("{0}类型为{1},Math.Round附加,计算结果为{2}<br/><br/>", hh2, hh2.GetType(), Math.Round(hh2, 2, MidpointRounding.AwayFromZero));
    
    
                 str.AppendFormat("数字{0},Math.Round计算结果为{1}<br/>", "6.345", Math.Round(6.345, 2));
                 str.AppendFormat("数字{0},Math.Round计算结果为{1}<br/>", "6.355", Math.Round(6.355, 2));
                 str.AppendFormat("数字{0},Math.Round计算结果为{1}<br/>", "6.335", Math.Round(6.335, 2));
                 str.AppendFormat("数字{0},Math.Round附加,计算结果为{1}<br/>", "6.345", Math.Round(6.345, 2, MidpointRounding.AwayFromZero));
                 str.AppendFormat("数字{0},Math.Round附加,计算结果为{1}<br/>", "6.355", Math.Round(6.355, 2, MidpointRounding.AwayFromZero));
                 str.AppendFormat("数字{0},Math.Round附加,计算结果为{1}<br/><br/>", "6.335", Math.Round(6.335, 2, MidpointRounding.AwayFromZero));
    
                 str.AppendFormat("{0}类型为{1},Math.Round计算结果为{2}<br/>", tt1, tt1.GetType(), Math.Round(tt1, 2));
                 str.AppendFormat("{0}类型为{1},Math.Round计算结果为{2}<br/>", tt2, tt2.GetType(), Math.Round(tt2, 2));
                 str.AppendFormat("{0}类型为{1},Math.Round计算结果为{2}<br/><br/>", tt3, tt3.GetType(), Math.Round(tt3, 2));
    
                 str.AppendFormat("{0}类型为{1},Math.Round附加,计算结果为{2}<br/>", tt1, tt1.GetType(), Math.Round(tt1, 2, MidpointRounding.AwayFromZero));
                 str.AppendFormat("{0}类型为{1},Math.Round附加,计算结果为{2}<br/>", tt2, tt2.GetType(), Math.Round(tt2, 2, MidpointRounding.AwayFromZero));
                 str.AppendFormat("{0}类型为{1},Math.Round附加,计算结果为{2}<br/><br/>", tt3, tt3.GetType(), Math.Round(tt3, 2, MidpointRounding.AwayFromZero));
    
                 str.AppendFormat("{0}类型为{1},Math.Round计算结果为{2}<br/>", ss1, ss1.GetType(), Math.Round(ss1, 2));
                 str.AppendFormat("{0}类型为{1},Math.Round计算结果为{2}<br/>", ss2, ss2.GetType(), Math.Round(ss2, 2));
                 str.AppendFormat("{0}类型为{1},Math.Round附加,计算结果为{2}<br/>", ss1, ss1.GetType(), Math.Round(ss1, 2, MidpointRounding.AwayFromZero));
                 str.AppendFormat("{0}类型为{1},Math.Round附加,计算结果为{2}<br/>", ss2, ss2.GetType(), Math.Round(ss2, 2, MidpointRounding.AwayFromZero));         
    
                 Response.Write(str);

    下面都是测试数据

    526.955类型为System.Double,tostring("0.00")计算结果为526.96
    526.945类型为System.Double,tostring("0.00")计算结果为526.95
    2.345类型为System.Single,tostring("0.00")计算结果为2.35
    2.355类型为System.Single,tostring("0.00")计算结果为2.36
    4.445类型为System.Decimal,tostring("0.00")计算结果为4.45
    4.435类型为System.Decimal,tostring("0.00")计算结果为4.44



    2.345类型为System.Single,Math.Round计算结果为2.35
    2.355类型为System.Single,Math.Round计算结果为2.36
    2.345类型为System.Single,Math.Round附加,计算结果为2.35
    2.355类型为System.Single,Math.Round附加,计算结果为2.36

    数字6.345,Math.Round计算结果为6.34
    数字6.355,Math.Round计算结果为6.36
    数字6.335,Math.Round计算结果为6.34
    数字6.345,Math.Round附加,计算结果为6.35
    数字6.355,Math.Round附加,计算结果为6.36
    数字6.335,Math.Round附加,计算结果为6.34

    526.955类型为System.Double,Math.Round计算结果为526.96
    526.945类型为System.Double,Math.Round计算结果为526.95
    526.935类型为System.Double,Math.Round计算结果为526.93

    526.955类型为System.Double,Math.Round附加,计算结果为526.96
    526.945类型为System.Double,Math.Round附加,计算结果为526.95
    526.935类型为System.Double,Math.Round附加,计算结果为526.93

    4.445类型为System.Decimal,Math.Round计算结果为4.44
    4.435类型为System.Decimal,Math.Round计算结果为4.44
    4.445类型为System.Decimal,Math.Round附加,计算结果为4.45
    4.435类型为System.Decimal,Math.Round附加,计算结果为4.44

    总结

    用tostring("0.00")对float,double,decimal都实现四舍五入

    用Math.Round对float实现四舍五入,decimal附加MidpointRounding.AwayFromZero才参数能实现,double都不适用

    总结为四舍五入问题:要么用toString("0.00"),要么用 Math.Round((decimal)num,2,MidpointRounding.AwayFromZero)

  • 相关阅读:
    sudo配置临时取得root权限
    Linux 前台 和 后台进程 说明
    延迟加载
    事件代理
    字符串方法总结
    javascript
    HTML
    通用样式,如清除浮动
    html脱离文档流事件
    经典容易忽略的行内块
  • 原文地址:https://www.cnblogs.com/wwkk/p/7102730.html
Copyright © 2011-2022 走看看