当前位置:  编程技术>.net/c#/asp.net

C# double和decimal数据类型以截断的方式保留指定的小数位数

    来源: 互联网  发布时间:2014-10-14

    本文导语:  项目中要用到以截断的方式取小数点后两位,故写了以下方法: 代码如下: /// /// 将小数值按指定的小数位数截断 /// /// 要截断的小数 /// 小数位数,s大于等于0,小于等于28 /// public static decimal ToFixed(decimal d, int s) { decimal sp ...

项目中要用到以截断的方式取小数点后两位,故写了以下方法:
代码如下:

///
/// 将小数值按指定的小数位数截断
///
/// 要截断的小数
/// 小数位数,s大于等于0,小于等于28
///
public static decimal ToFixed(decimal d, int s)
{
decimal sp = Convert.ToDecimal(Math.Pow(10, s));

if (d < 0)
return Math.Truncate(d) + Math.Ceiling((d - Math.Truncate(d)) * sp) / sp;
else
return Math.Truncate(d) + Math.Floor((d - Math.Truncate(d)) * sp) / sp;
}

///
/// 将双精度浮点值按指定的小数位数截断
///
/// 要截断的双精度浮点数
/// 小数位数,s大于等于0,小于等于15
///
public static double ToFixed(double d, int s)
{
double sp = Math.Pow(10, s);

if (d < 0)
return Math.Truncate(d) + Math.Ceiling((d - Math.Truncate(d)) * sp) / sp;
else
return Math.Truncate(d) + Math.Floor((d - Math.Truncate(d)) * sp) / sp;
}

顺带提一下:
double和decimal的ToString("#.##")方法使用的是四舍五入;
静态类System.Math下的Round(decimal d, int decimals)方法,舍入的方式使用的是“四舍六入五成双”;
静态类System.Math下的Round(decimal d, int decimals, MidpointRounding mode)的第三个参数是枚举参数,指示如何处理中间值(5);
静态类System.Math的方法:http://msdn.microsoft.com/zh-cn/library/system.math_methods(v=vs.80)

    
 
 
 
本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • 请教如何设置Double 的格式?double = 10.66666667,如何取得小数点后2 位的数值?
  • 帮个忙!如何取double类小数的前几位?或者进行四舍五入?
  • java 中有没有只取double的小数部分的方法
  • java使double保留两位小数的多方法 java保留两位小数
  • 如何定义 double 数据类型的小数点位数?如25保留两位 则为 25.00 谢谢!
  • 初学者的问题:如何将一个double类型的数字保留两位小数,在线等待!
  • java命名空间java.awt.geom类line2d.double的类成员方法: line2d.double定义及介绍
  • java读文件,比如有文件中有8个字节是double型,怎么它读出来,也转为double
  • java命名空间java.awt.geom类quadcurve2d.double的类成员方法: quadcurve2d.double定义及介绍
  • java中int, double 转化成String, String转化成double,怎么做?请给个例子.
  • java命名空间java.awt.geom类arc2d.double的类成员方法: arc2d.double定义及介绍
  • 如何比较两个数的大小,并按从小到大的次序输出。如:double d1=23.4;double d2=35.1;
  • java命名空间java.awt.geom类ellipse2d.double的类成员方法: ellipse2d.double定义及介绍
  • double in_sum=double.parseDouble(in_sum1);有错?
  • java命名空间java.awt.geom类path2d.double的类成员方法: path2d.double定义及介绍
  • 怎么样将String转换成double?
  • java命名空间java.awt.geom类rectangle2d.double的类成员方法: rectangle2d.double定义及介绍
  • 如何將一個String 類型的變量轉換成 double類型.
  • java命名空间java.awt.geom类point2d.double的类成员方法: point2d.double定义及介绍
  • java中的Double类
  • java命名空间java.awt.geom类roundrectangle2d.double的类成员方法: roundrectangle2d.double定义及介绍
  • 关于将字符串转换为DOUBLE类型????????????????????在线等待!!!!!!
  • java命名空间java.awt.geom类cubiccurve2d.double的类成员方法: cubiccurve2d.double定义及介绍
  • 关于double类型为null的问题。
  • java命名空间java.lang类double的类成员方法: double定义及介绍
  • Bug跟踪系统 Double Choco Latte
  • java命名空间java.lang类double的类成员方法: valueof定义及介绍
  • Double to String?


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3