某某茶叶有限公司欢迎您!
金沙棋牌在线 > 必赢棋牌官网 > sql decimal 调控查询输出小数位数

sql decimal 调控查询输出小数位数

时间:2020-03-16 11:09

分享一个sql函数,它可以很好的控制查询出来的结果的小数位数的显示,有需要的朋友可以参考一下哦。

decimal保留指定位数小数的时候,.NET自带的方法都是四舍五入的。

关键词:头文件<iomanip>,指令setw,fixed,setprecision。

decimal(18,0)18是定点精度,0是小数位数。decimal(a,b)a指定指定小数点左边和右边可以存储的十进制数字的最大个数,最大精度38。b指定小数点右边可以存储的十进制数字的最大个数。小数位数必须是从 0 到 a之间的值。默认小数位数是 0。

项目中遇到分摊金额的情况,最后一条的金额=总金额-已经分摊金额的和。

setw()这个指令也可以配合setfill用于对齐输出,详情见另一篇博客

实例

这样可能导致最后一条分摊的时候是负数,所以自己写了一个保留指定位数小数的方法。

例:输出4位小数

代码如下复制代码

扩展方法的使用,使得调用起来很优雅。

代码:

select cast(12.347343 asdecimal(18,2))

图片 1图片 2

 1 #include <iostream> 2 #include <iomanip> 3 using namespace std; 4 int main() 5 { 6     double test[4] = { 1.1,1.12,1.123,1.1234 }; 7     for (int i = 0; i < 4; i++) 8     { 9         cout << fixed << setprecision(4) << test[i] << endl;10     }11 }

输出

 1 public static class DecimalExtension
 2     {
 3         /// <summary>
 4         /// decimal保留指定位数小数
 5         /// </summary>
 6         /// <param name="num">原始数量</param>
 7         /// <param name="scale">保留小数位数</param>
 8         /// <returns>截取指定小数位数后的数量字符串</returns>
 9         public static string ToString(this decimal num, int scale)
10         {
11             string numToString = num.ToString();
12 
13             int index = numToString.IndexOf(".");
14             int length = numToString.Length;
15 
16             if (index != -1)
17             {
18                 return string.Format("{0}.{1}",
19                     numToString.Substring(0, index),
20                     numToString.Substring(index + 1, Math.Min(length - index - 1, scale)));
21             }
22             else
23             {
24                 return num.ToString();
25             }
26         }
27     }

结果:

12.35

decimal保留指定位数小数

图片 3

decimal[ (*p[ ,s] )] 和 numeric[ (p[ ,s*] )]