我有一个十进制= 123456和一个整数= 5 我想插入“。”在我的小数点的第五个位置从右边得到1.23456 如何使用标准格式化功能(即,不除以10的幂,只有格式化才能添加缺失的零)? 感谢。
答案 0 :(得分:1)
你想要这样的东西吗?
decimal d = 10000000;
int n=4;
string s = d.ToString();
var result = s.Substring(0, s.Length - n) + "." + s.Substring(s.Length - n);
答案 1 :(得分:1)
这实际上非常有趣,至少,我认为是。我希望通过投入负数或考虑可能的十进制输入,我没有愚蠢地过火......
decimal input;
int offset;
string working = input.ToString();
int decIndex = working.IndexOf('.');
if (offset > 0)
{
if (decIndex == -1)
{
working.PadLeft(offset, '0');
working.Insert(working.Length - offset, ".");
}
else
{
working.Remove(decIndex, 1);
decIndex -= offset;
while (decIndex < 0)
{
working.Insert(0, "0");
decIndex++;
}
working.Insert(decIndex, ".");
}
}
else if (offset < 0)
{
if (decIndex == -1)
{
decIndex = working.Length();
}
if (decIndex + offset > working.Length)
{
working.PadRight(working.Length - offset, '0');
}
else
{
working.Remove(decIndex, 0);
working.Insert(decIndex + offset, ".");
}
}
答案 2 :(得分:0)
这非常难看;真正的价值是什么? 12345还是1.2345?为什么要存储12345,然后尝试将代表作为不同的数字?关闭你试图传达的实际内容是一个定点(编码)值,你需要先解码它。即
decimal fixedPoint = 12345
decimaldecoded = fixedPoint / (decimal)10000
decoded.ToString();
所以在你的代码中你应该定义你有一个
var fixedPoint = new FixedPointValue(12345, 5);
var realValue = fixedPoint.Decode();
如果任何其他程序员看到这个,那么为什么你必须以这种方式格式化它显然很容易。
答案 3 :(得分:0)
decimal d = 100000000000;
string str = d.ToString();
int i = 5;
string str2 = str.Insert(str.Length - i, ".");
Console.WriteLine(str2);
Console.Read();