在C#中,我需要将其转换为小数。问题是我想将小数点放在long中的特定位置。
例如,假设我将以下数字作为long:
long l = 123456789
当转换为浮点位于第三个位置的十进制时,我希望得到以下内容:
decimal d = 123456.789
举个例子,理想情况下,函数类似于Java中的BigDecimal.valueOf,它允许你给出一个long和一个位置来放小数点,并返回正确的值。
我知道其中一个解决方案是将long格式化为具有正确小数点位置的字符串,然后将其转换回小数。另一个解决方案是将长度乘以10 -Decimal places wanted ,但我想知道是否有更好的替代方案。
答案 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
次迭代。