从十进制转换为BigInt(6个字符的精度)

时间:2013-12-18 21:21:16

标签: c# postgresql decimal npgsql bigint

我在C#中使用Web服务,并通过Npgsql库将记录插入postgres数据库。

我有一个成本字段,网络服务给我一个十进制类型“12.57” 我的postgres数据库和应用程序期望它是一个固定的6位数的BigInt类型,如“125700”

除了把它转换为字符串之类的东西,删除小数点几个0并转换为Int64之外,我想不出一个很棒的方法。

我错过了一种更简单的方法吗?

编辑:我应该补充一点,目前我使用的是BigInt的Npgsql参数类型,当我提供成本时,它只是在数据库中舍入12.57到13

2 个答案:

答案 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将对值进行舍入。