1

私は小数 = 123456 と整数 = 5 を持っています。小数点の右から 5 番目の位置で 1.23456 を取得します。これを標準の書式設定関数で行うにはどうすればよいですか (つまり、10 の累乗で除算せずに書式設定して不足しているゼロを追加するだけです)。ありがとう。

4

4 に答える 4

1

このようなものが欲しいですか?

decimal d = 10000000;
int n=4;

string s = d.ToString();
var result = s.Substring(0, s.Length - n) + "." + s.Substring(s.Length - n);
于 2013-03-01T20:41:55.663 に答える
1

これは実際にはかなり興味深いものでした。少なくとも、そうだったと思います。負の数を投げたり、10進数の入力の可能性を考慮したりして、ばかげて行き過ぎないことを願っています...

            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, ".");
                }

            }
于 2013-03-01T21:23:05.200 に答える
0

String.Insertでこれを行うことができます

decimal d = 100000000000;
string str = d.ToString();
int i = 5;
string str2 = str.Insert(str.Length - i, ".");
Console.WriteLine(str2);
Console.Read();
于 2013-03-01T21:14:40.900 に答える
0

これは非常に醜いです。本当の価値とは?12345 または 1.2345? 12345 を保存してから、別の数値として表現しようとするのはなぜですか? 実際に持っているものを伝えようとしていることは、固定小数点 (エンコードされた) 値であり、最初にデコードする必要があります。すなわち

decimal fixedPoint = 12345
decimaldecoded = fixedPoint / (decimal)10000
decoded.ToString();

したがって、コードでは、

var fixedPoint = new FixedPointValue(12345, 5);
var realValue = fixedPoint.Decode();

他のプログラマーがこれを見れば、なぜそのようにフォーマットしなければならないのかは明白です。

于 2013-03-01T20:47:04.457 に答える