从事ASP.NET in C#开发快一年了,今天才知道,C#中保留小数位数时没有使用截断的方式

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

复制代码 代码如下:

/// <summary>
/// 将小数值按指定的小数位数截断
/// </summary>
/// <param name="d">要截断的小数</param>
/// <param name="s">小数位数,s大于等于0,小于等于28</param>
/// <returns></returns>
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;
}

/// <summary>
/// 将双精度浮点值按指定的小数位数截断
/// </summary>
/// <param name="d">要截断的双精度浮点数</param>
/// <param name="s">小数位数,s大于等于0,小于等于15</param>
/// <returns></returns>
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)

转载于:https://www.cnblogs.com/Kevin1002/p/4723462.html

【转载】C# double和decimal数据类型以截断的方式保留指定的小数位数相关推荐

  1. [转载]使用awk进行数字计算,保留指定位小数

    对于在Shell中进行数字的计算,其实方法有很多,但是常用的方法都有其弱点: 1.bc bc应该是最常用的Linux中计算器了,简单方便,支持浮点. [wangdong@centos715-node1 ...

  2. mysql中的double类型_MySQL中float、double、decimal三个浮点类型的区别与总结!

    作者:极客小俊 一个专注于web技术的80后 我不用拼过聪明人,我只需要拼过那些懒人 我就一定会超越大部分人! CSDN@极客小俊,原创文章, B站技术分享 个人博客: cnblogs.com 前端h ...

  3. 对double值进行四舍五入,保留两位小数的几种方法

    mport java.text.DecimalFormat; DecimalFormat df = new DecimalFormat("######0.00"); double ...

  4. java保留两位小数_java使double保留两位小数的多方法 java保留两位小数

    这篇文章主要介绍了java使double类型保留两位小数的方法,大家参考使用吧 mport java.text.DecimalFormat; DecimalFormat df = new Decima ...

  5. java中想要保留2位小数_java使double保留两位小数的多方法 java保留两位小数

    mport java.text.DecimalFormat; DecimalFormat    df   = new DecimalFormat("######0.00"); do ...

  6. java保留二位小数_java使double保留两位小数的多方法 java保留两位小数

    复制代码代码如下: mport java.text.DecimalFormat; DecimalFormat    df   = new DecimalFormat("######0.00& ...

  7. java 两位小数 四舍五入_java里的四舍五入(保留两位小数,返回double类型)

    1.最简单的操作,验证之后是准确的四舍五入 double payPercent=123.345; System.out.println((double)Math.round(payPercent*10 ...

  8. java使double保留两位小数

    代码如下:mport java.text.DecimalFormat; DecimalFormat df = new DecimalFormat("######0.00"); do ...

  9. java double 保留小数_java使double类型保留两位小数的方法

    java使double类型保留两位小数的方法 本文是百分网小编整理的主要介绍关于java使double类型保留两位小数的方法,有需要的朋友们一起看看吧!想了解更多相关信息请持续关注我们应届毕业生考试网 ...

最新文章

  1. 拼多多再起波澜!某程序员匿名发布拼多多楼下救护车照片,却被揪出开除!...
  2. 洛谷P1315 观光公交
  3. JavaWeb 项目安全问题及其解决方案
  4. css权重计算方法浅谈
  5. next_permutation 与 prev_permutation(全排列算法)
  6. PHP mysql_real_escape_string() 函数
  7. 「 每日一练,快乐水题 」258. 各位相加
  8. 使用.NET中的XML注释(一) -- XML注释标签讲解
  9. SAP Spartacus RouteEvent,如何从localhost跳转到其他路由路径的
  10. c语言随机数循环延迟,C语言生成随机数的函数、延时函数
  11. 数据结构铁轨问题_每天5分钟用C#学习数据结构(20)图 Part 1
  12. PowerShell 远程执行任务
  13. 【linux】 linux 查看系统信息
  14. 集合点(掌握)-并发
  15. numpy教程:函数库和ufunc函数
  16. julia语言 python解释器_深入Python解释器源码,我终于搞明白了字符串驻留的原理...
  17. 【工具】中国菜刀 官方原版下载 官网下载链接
  18. 【语篇标记练习题】Dismissing what was said
  19. linux ftp解压命令 cannot fid or open,CPAN命令操作细节
  20. 如何利用MATLAB调用手机摄像头(手把手教程)

热门文章

  1. Scala集合常用方法:reduceLeft/reduceRight
  2. Scala集合List的常用方法:take/flatMap/filter/zip/union/intersect/diff及WordCount集合实现
  3. Python Django 一对多之插入多条数据示例
  4. Python Django 文件上传代码示例
  5. Python3需要安装的MySQL库是mysqlclient
  6. MySQL优化group by和distinct
  7. Java Radom类的使用方法实例
  8. Spring boot 将配置文件属性注入到一个bean中
  9. matlab利用t-SNE实现高维数据可视化(tsne函数用法实例)
  10. 不小心关闭了explorer.exe进程,桌面变白解决办法