小数按精度转换

在银行之类的企业里面,会遇到很多数字,特别是小数,对于小数精度的保留是许多程序员要注意的事情。

常见的c# 处理小数位数如下:

Math.Round(0.333333,2);//按照四舍五入的国际标准
double dbdata=0.335333;
 string str1=String.Format("{0:F}",dbdata);//默认为保留两位

decimal.Round(decimal.Parse("0.3333333"),2)

private System.Globalization.NumberFormatInfo nfi = new System.Globalization.NumberFormatInfo();

    float test=0.333333f;
    nfi.NumberDecimalDigits=2;
    string result=test.ToString("N", nfi);

    string result= String.Format("{0:N2}",Convert.ToDecimal("0.333333").ToString());

// 这是个保留两位小数并加千分位符号的方法

Convert.ToDouble(DataBinder.Eval(dbr, "入账学杂费")).ToString("n");

 

 

 

现有要求如下,确定了精度(如 0.001),对数字做不同的处理

1.正数,如12.1111,则需转换为12.112,而12.11则仍为12.11,即按精度截取,但 不是四舍五入,而是如果是正数则进1

2.附属,如-12.1111,则需转换为-12.111,即如果为负数,则去掉

 

我 的想法:

1.将数字转换为字符串类型,获取小数的位数,如0.01则小数位数为2

2.根据位数判断,如果要转换的数的小数位 数小于等于精度的小数位数,则无需转换(也无需判断正负)

3.如果 要转换的数的小数位数大于精度的小数位数,则需转换并需判断正负

4. 如果为正数,将要转换的数与精度(必须为0.01类似的形式)相加并截取精度的小数位数的字符串

5.如果为负数,直接截取

 

下 面是我的代码:

AccuracyConvert  

 我 知道这样做肯定会存在很多问题,例如在数字转换字符串时候精度丢失之类的问题,但只是目前我的想法,希望大虾们教我下,什么方法更好,更方便(我已经在博客园发表了,现在抄过来,嘿嘿)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值