1

int a = 456;using string.Formatから「45.6」のような文字列を取得することは可能ですか?

4

5 に答える 5

3

数学演算は、異なる文化では異なる結果をもたらす可能性があります。,の代わりに取得する場合があり.ます。これを試して

var aStr = a.ToString();
var res = aStr.Insert(aStr.Length - 1, ".")
于 2013-01-15T12:59:06.140 に答える
2

10で割ります(2倍として)。

現在の文化も考慮に入れる必要があります。常にドットを取得するには、を使用しますInvariantCulture

浮動小数点の不正確さの問題(45-> 4.49999999など)を回避するには、「0.0」形式を指定して最初の桁のみを出力するようにしてください。

int i = 123;
var s = String.Format (CultureInfo.InvariantCulture, "{0:0.0}", i / 10.0);
于 2013-01-15T13:03:53.490 に答える
0

IFormatProviderを使用して実現できます。(任意の形式にカスタマイズできます)

int val = 456;  
string s = string.Format(new CustomerFormatter(),"{0:1d}", val);
string s1 = string.Format(new CustomerFormatter(), "{0:2d}", val);
Console.WriteLine(s); //45.6
Console.WriteLine(s1); //4.56

 public class CustomerFormatter : IFormatProvider, ICustomFormatter
{
    public object GetFormat(Type formatType)
    {
        if (formatType == typeof(ICustomFormatter))
            return this;
        else
            return null;
    }

    public string Format(string format, object arg, IFormatProvider formatProvider)
    {
        if (!this.Equals(formatProvider))
        {
            return null;
        }
        else
        {
            string customerString = arg.ToString();
             switch (format)
            {
                case "1d":
                    return customerString.Insert(customerString.Length - 1, ".");
                case "2d":
                    return customerString.Insert(customerString.Length - 2, ".");

                default:
                    return customerString;
            }
        }
    }
}
于 2013-01-15T13:14:50.053 に答える
0
        int a = 456;
        String aString = String.Format("{0}{1}{2}", a / 10, ".", a % 10);
于 2013-01-15T13:19:47.720 に答える
0
Int32 a = 456;

String aString = a.ToString();
aString = aString.Insert((aString.Length - 1), ".")
于 2013-01-15T13:25:21.670 に答える