将十进制转换为10位数字

本文关键字:10位 数字 转换 十进制 | 更新日期: 2023-09-27 18:06:12

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

如何将我的10.0 decimal值转换为1000000000 ?

感谢

编辑:该字段用于插入到订单事务表中的订单金额。不知道为什么在这个字段中有10位数的值,但是这个表中已经有数百万条记录,所有记录都包含10位数。所以我只是想保持我的价值观不变。

这里有一些基本的add'l细节。在下面的示例中,假设我在txtOrderAmount文本框中输入"10.00",我需要将其转换为"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 | Amount

2086 | 2-14-2014 | 1123 | 5000000000

2087 | 2-18-2014 | 1197 | 1000000000

2088 | 3-9-2014 | 8741 | 1350000000

希望有帮助。同样,为什么最初的开发人员在这里做了一个10位的BIGINT,我不知道,但我只是想保持我的值与他的值相同。

将十进制转换为10位数字

try

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

这是一个简单的乘法,如果InsertOrderTransaction方法接受整数

,则将小数视为整数。

最简单的方法就是相乘:

Decimal myBigNumber = smallNumber * 100000000;

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

因为整数不存储小数位信息,如果不添加字段或转换为浮点类型,就没有一种简单的方法来修复这个问题。删除10-99的要求将使转换回10.0成为不可能。

谢谢你的帮助。这些答案的问题在于,计算时假设数字在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