在特定位置长到十进制小数点

时间:2014-07-29 17:43:41

标签: c# decimal long-integer bigdecimal decimal-point

在C#中,我需要将其转换为小数。问题是我想将小数点放在long中的特定位置。

例如,假设我将以下数字作为long:

long l = 123456789

当转换为浮点位于第三个位置的十进制时,我希望得到以下内容:

decimal d = 123456.789

举个例子,理想情况下,函数类似于Java中的BigDecimal.valueOf,它允许你给出一个long和一个位置来放小数点,并返回正确的值。

我知道其中一个解决方案是将long格式化为具有正确小数点位置的字符串,然后将其转换回小数。另一个解决方案是将长度乘以10 -Decimal places wanted ,但我想知道是否有更好的替代方案。

4 个答案:

答案 0 :(得分:4)

为什么不除以1000(或10 ^ N,其中N是小数位数)?

答案 1 :(得分:3)

long l = 123456789L;
int decplaces = 3;

decimal divisor =(decimal) Math.Pow(10, decplaces);
decimal d = l/divisor;

答案 2 :(得分:2)

您可以使用带有不同组成部分的Decimal constructor。您需要进行一些位移以将指数引入所有相关部分,但这不应该太难。如果你知道你的数值不会超过62位,那也会让事情变得更容易。

答案 3 :(得分:1)

你可以写一个循环来乘以0.1m正确的次数,即循环的numberOfDecimalPlacesWanted次迭代。

相关问题