将十进制转换为10位数字

时间:2014-06-02 16:21:40

标签: c# asp.net

在我的c#应用程序中,我需要将decimal值(10.0)插入到数据库字段(字段类型BIGINT)中。 db中当前的值都是10位数。

如何将10.0 decimal值转换为1000000000

由于

编辑:此字段用于插入订单交易表中的订单金额。不知道为什么他们在这个领域有10位数的值,但是这个表中已有数百万条记录,都包含10位数。所以我只是想保持我的价值观一致。

这里有一些基本的添加细节。在下面的例子中,假设我输入" 10.00"进入txtOrderAmount文本框,我需要将其转换为" 1000000000"插入数据库:

我的c#应用程序:

decimal orderAmount = 0;
orderAmount = Convert.ToDecimal(txtOrderAmount.Text);
if(orderAmount > 0)
{
     ledger.InsertOrderTransaction(amount);
}

这会调用InsertOrderTransaction,然后插入数据库。

我的数据库表中的一些示例记录,名为" Ledger"。样本价格为$ 50.00,$ 10.00,&分别为13.50美元:

LedgerID | EntryDate | OrderID |量

2086 | 2-14-2014 | 1123 | 50亿

2087 | 2-18-2014 | 1197 |十亿

2088 | 3-9-2014 | 8741 | 13.5

希望有所帮助。再次,为什么原始开发人员在这里做了10位数的BIGINT,我不知道,但我只想保持我的价值与他的价值相同。

3 个答案:

答案 0 :(得分:2)

decimal orderAmount = 0;
orderAmount = Convert.ToDecimal(txtOrderAmount.Text);
if(orderAmount > 0)
{
     ledger.InsertOrderTransaction(amount * 100000000);
}

如果InsertOrderTransaction方法接受整数

,那么简单的乘法将把小数视为整数

答案 1 :(得分:0)

实现这一目标的最简单方法是繁殖:

Decimal myBigNumber = smallNumber * 100000000;

这有一个重要的警告:任何数字> = 100都会中断也就是说,它们的长度是11位数。此外,数字< 10将会中断,因为它们的长度为9位数。

因为整数不存储小数位信息,所以没有简单的方法可以在不添加字段或转换为浮点类型的情况下修复此问题。删除10-99要求将使转换回到10.0。

答案 2 :(得分:-1)

感谢您的帮助。答案的问题是计算假设数字在10-99之间。

我调整了一点以便能够计算任何值:

int wholeVal = (int)amount;  //"amount" is a double & the original value from the textbox.  Counvert it to an int
int wholeValLength = wholeVal.ToString().Replace(",", "").Length;  //get the length of int
string calculation = "1";  //number to calculate begins with 1
for (int i = wholeValLength; i < 10; ++i)
{
     //add zeros to the calculation value
     calculation += "0";  
}
double dblCalculation = Convert.ToDouble(calculation);  
ledgerAmount = amount * dblCalculation;  //perform calculation