三位一撇:处理数字12345.67——12,345.67

一:数据库处理
1:数据库有Convert(),一般大家用的比较多的是对时间的处理,其实他还可以对金钱类型(money)处理。
select convert(varchar(30),convert(money,要处理的数字),1)。
这种方法可以加上三位一撇,但是只能保留2位小数。
2:数据库自定义函数处理。
create FUNCTION [dbo].[FN_FormatNumber]
(
@Value VARCHAR(100)
)
RETURNS VARCHAR(100)
AS

BEGIN
   DECLARE @Temp varchar(100)
   SET @Temp=''

   --返回值
   DECLARE @ReturnValue VARCHAR(100)
   SET @ReturnValue = ''

    DECLARE @i INT
    SET @i=charindex('.',@Value)

    IF @i>0
    BEGIN
       SET @Temp = RIGHT(@Value,LEN(@Value)-@i+1)
       SET @ReturnValue = LEFT(@Value,@i-1)
    END
    ELSE
    BEGIN
       SET @ReturnValue = @Value
    END
   
    IF LEN(@ReturnValue)>3
    BEGIN
       WHILE LEN(@ReturnValue)>3
       BEGIN
           SET @Temp = ',' + RIGHT(@ReturnValue,3) + @Temp
           SET @ReturnValue = LEFT(@ReturnValue,LEN(@ReturnValue)-3)
       END
       SET @ReturnValue = @ReturnValue + @Temp
    END
    ELSE
    BEGIN
       SET @ReturnValue = @Value;
    END
 return @ReturnValue
END

二:C#程序处理
1:string returnvalue= Convert.ToDouble("123456.678").ToString("N");
这种方式也是默认的保留两位小数。
后面的N可以修改成N1,N2,N3意思是代表保留1,2,3为小数,这种方式可以设置保留的小数位数,但是当设置为N3的时候,1.2会显示为1.200,位数不够的时候会在后面补0。
去除后面的0,可以使用Convert.ToDouble("123456.100")自动会去掉后面的0。
多说一点对于去除数字后面的0的方法js可以直接写上parseFloat(要去除0的字符串)。
2:自己写一个方法一样可以解决
 public string ConvertNum(object obva, string dotnum)
        {
            string value = "0";
            if (!DBNull.Value.Equals(obva))
            {
                value = obva.ToString();
            }
            string inter = "";
            string strdotnum = "";
            string opera = value.StartsWith("-") ? "-" : "";
            dotnum = string.IsNullOrEmpty(dotnum) ? "2" : dotnum;
            value = string.IsNullOrEmpty(value) ? "0" : value.TrimStart('-');
            value = Convert.ToDouble(Convert.ToDouble(value).ToString("f" + dotnum)).ToString();
            if (value.Contains('.'))
            {
                string[] values = value.Split('.');
                value = values[0];//整数部分
                strdotnum = values[1];//小数部分
            }
            //分割完成,处理整数部分加3位一瞥
            while (value.Length > 3)
            {
                inter = "," + value.Substring(value.Length - 3) + inter;
                value = value.Substring(0, value.Length - 3);
            }
            if (string.IsNullOrEmpty(strdotnum))
            {
                return opera + value + inter;
            }
            return opera + value + inter + "." + strdotnum;
        }
写的有点乱,主要是为了防止数据库为空的时候,和是负值的时候
3:还可以使用一个更简单的方法解决就是.ToString()的另外一种写法
Convert.ToDouble("123456.678").ToString("#,#.######");
最后面也是保留几位小数。
这地方具体使用可以自己在处理一下例如
Convert.ToDouble("123456.678434341234").ToString("#,#." + new string('#', 4))
123456.678434341234是要处理的数据,后面的4是要保留的小数位数。
我自己感觉这是最好的一种方式。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值