场景

C#中怎样格式化小数位数为指定位数的工具类。

注:

博客主页:
https://blog.csdn.net/badao_liumang_qizhi
关注公众号
霸道的程序猿
获取编程相关电子书、教程推送与免费下载

实现

首先新建工具类DataProcessor,然后在工具类下新建方法FormatFloatValue

        /// <summary>/// 格式化小数位数/// </summary>/// <param name="floatValue">要格式化的小数对象</param>/// <param name="maxPrecision">保留的最大小数位数</param>/// <returns>返回格式化后的小数字符串值</returns>public static object FormatFloatValue(object floatValue, int maxPrecision){if (IsNullOrEmpty(floatValue)){return String.Empty;}else{int intPrecision = GetValidPrecision(floatValue, maxPrecision);return String.Format("{0:f" + intPrecision + "}", floatValue);}}

其中用到了获取浮点数值的有效小数位数的方法GetValidPrecision

        /// <summary>/// 获取浮点数值的有效小数位数/// </summary>/// <param name="value">浮点数值</param>/// <param name="maxPrecision">允许返回的最大小数位数</param>/// <returns>返回有效小数位数</returns>public static int GetValidPrecision(object value, int maxPrecision){if (DataProcessor.IsNullOrEmpty(value)){return 0;}else{if (value.ToString().IndexOf(".") == -1){return 0;}else{string strValue = value.ToString();string precision = strValue.Substring(strValue.IndexOf(".") + 1);int cnt = 0;    //保存末尾0的个数for (int i = precision.Length - 1; i > 0; i--){if (precision.ToCharArray()[i] == '0'){cnt++;}else{break;}}int result = precision.Length - cnt;    //为有效小数位数if (result > maxPrecision){return maxPrecision;}else{return result;}}}}

这其中又用到了判空的方法IsNullOrEmpty

        /// <summary>/// 判断是否为空/// </summary>/// <param name="value">要判断的对象</param>/// <returns>为空返回true,否则返回false</returns>public static bool IsNullOrEmpty(object value){if (value == null || value == DBNull.Value || string.IsNullOrWhiteSpace(value.ToString())){return true;}return false;}

调用示例

object value = DataProcessor.FormatFloatValue(obj, 3);

表示要将小数格式为3为小数位数。

效果

格式化前

格式化后

C#中格式化小数位数为指定位数的工具类相关推荐

  1. python保留一位小数format_Python保留指定位数的小数

    Python保留指定位数的小数 1 '%.2f' %f 方法(推荐) f = 1.23456 print('%.4f' % f) print('%.3f' % f) print('%.2f' % f) ...

  2. Java格式化日期用斜杠_[java工具类01]__构建格式化输出日期和时间的工具类

    在之前的学习中,我写过一篇关于字符串格式化的,就主要设计到了时间以及日期的各种格式化显示的设置,其主要时通过String类的fomat()方法实现的. 我们可以通过使用不同的转换符来实现格式化显示不同 ...

  3. Java中windows路径转换成linux路径等工具类

    项目中发现别人写好的操作系统相关的工具类: 我总结的类似相关博客:http://www.cnblogs.com/DreamDrive/p/4289860.html 1 import java.net. ...

  4. java 中格式化小数位数

    http://terran-li2008.iteye.com/blog/205135 double d = 221.62999999999997 ;   NumberFormat format = N ...

  5. Java中的微信支付: 微信API-V3签名生成工具类

    微信支付API v3简介 微信官方文档地址 为了在 保证支付 安全的前提下,带给商户 简单.一致且易用的开发体验,我们推出了全新的微信支付API v3. 相较于之前的微信支付API,主要区别是: 遵循 ...

  6. java中数字格式金额转换成中文大写金额工具类

    /*** 金额转换工具类*/ public class MoneyUtils {private static final String UNIT = "万千佰拾亿千佰拾万千佰拾元角分&quo ...

  7. Python输出指定位数的小数

    输出指定位数的小数 python输出指定位数小数: 规定输出保留X的N位小数: 1)print('%.Nf'%X)或者print("%.Nf"%X) 2)print(format( ...

  8. js中获取小数点后两位小数

    在 JavaScript 中,可以使用 toFixed() 方法来获取小数点后的指定位数. 例如,如果要获取一个数字的小数点后两位小数,可以这样写: var num = 3.14159265; var ...

  9. java aes 工具类_Java中的AES加解密工具类:AESUtils

    本人手写已测试,大家可以参考使用 package com.mirana.frame.utils.encrypt; import com.mirana.frame.constants.SysConsta ...

最新文章

  1. uniapp 长链接 socket 封装
  2. 每天一道Leetcod或者Codeforce算法系列
  3. imagesLoaded-检测图片是否正确加载的js插件
  4. 创建设计模式 - 抽象工厂设计模式
  5. 尝试笔记 01 之 CSS 边角上的标签
  6. matlab简单分析矩阵乘法——一阶行向量乘一阶列向量
  7. 用SpringBoot集成Netty开发一个基于WebSocket的聊天室
  8. 腾讯正式对外开源高性能 RPC 开发框架与微服务平台Tars
  9. 散乱插值及MATLAB绘图函数
  10. 1.4多媒体技术的发展历史
  11. PHP+经贸时间轴 毕业设计-附源码211617
  12. 10月全球搜索引擎市场份额:Google、Bing份额大涨
  13. 如何理解相关性系数(pearson、spearman、kendall)
  14. fastq与fasta文件格式解析
  15. 住建部发布《全国建筑工人管理服务信息平台数据对接方案》
  16. 电子邮件发送服务器怎么看钱,验证电子邮件的验证码是发到哪里
  17. 二叉树的递归遍历及非递归遍历
  18. php 环回地址,环回地址(127.0.0.1)的作用
  19. 133 十面埋伏的并发(二):自旋锁
  20. c语言实验一,c语言实验-实验一.doc

热门文章

  1. JSP内置对象(request、session、application)
  2. XOR Specia-LIS-t 异或和 贪心
  3. 华为12月份鸿蒙适配mate40,华为:Mate40系列在12月可优先升级鸿蒙系统
  4. IDEA运行VUE项目
  5. 支付业务流程--h5、APP
  6. VS2017 error C3646: 未知重写说明符
  7. 英语什么意思_“你什么意思”用英语怎么说?千万不要说成“What#39;s your meaning?”...
  8. monthdiff oracle_timestampdiff
  9. mysql主从同步配置超详细_MySQL主从同步配置
  10. caxa明细表导入零件材质_各种橡胶材质橡胶制品