我在C#中使用Web服务,并通过Npgsql库将记录插入postgres数据库。
我有一个成本字段,网络服务给我一个十进制类型“12.57” 我的postgres数据库和应用程序期望它是一个固定的6位数的BigInt类型,如“125700”
除了把它转换为字符串之类的东西,删除小数点几个0并转换为Int64之外,我想不出一个很棒的方法。
我错过了一种更简单的方法吗?
编辑:我应该补充一点,目前我使用的是BigInt的Npgsql参数类型,当我提供成本时,它只是在数据库中舍入12.57到13
答案 0 :(得分:2)
为什么不乘以10000?
答案 1 :(得分:0)
如果要在小数点后保留2位数的成本值,请将该值乘以100,然后再将其存储在数据库中。
string cost = "12.57";
decimal d = decimal.Parse(cost);
if (d >= 10000.0m)
{
throw new Exception("Input value " + cost + " is too large");
}
int i = (int)(d * 100.0m + 0.5m);
string result = i.ToString();
如果小数点后面的位数超过2位,+ 0.5m
将对值进行舍入。