小数点以下2桁で表示するにはどうすればよいですか?0に等しくない最初の2小数点を表示する方法
例:私は0.00045たい0.00045578の場合
と1.0000533535のために、私は1.000053
小数点以下2桁で表示するにはどうすればよいですか?0に等しくない最初の2小数点を表示する方法
例:私は0.00045たい0.00045578の場合
と1.0000533535のために、私は1.000053
これにはフォーマットが組み込まれていません。
数字の小数部分を取得し、2桁になるまでゼロの数を数えて、それからフォーマットをまとめることができます。例:
double number = 1.0000533535;
double i = Math.Floor(number);
double f = number % 1.0;
int cnt = -2;
while (f < 10) {
f *= 10;
cnt++;
}
Console.WriteLine("{0}.{1}{2:00}", i, new String('0', cnt), f);
出力:
1.000053
注:指定されたコード、実際に負の数のためにそこに数の小数部分である、とされていない場合にのみ機能します。これらのケースをサポートする必要がある場合は、そのチェックを追加する必要があります。
私はループなしで同等のものを書きます: '-ceil(log(x%1、10))'最初のゼロ以外の数字のインデックスを直接与える(例えば、 'log(0.0002)== -3.69..') – phg
非常にエレガントで、私は今日何かを学んだ。 – GrayFox374
私のソリューションは、数値を文字列に変換することですしたいです。 "。"を検索し、ゼロ以外の数字が見つかるまでゼロを数えてから2桁を取る。
これは洗練された解決策ではありませんが、一貫した結果が得られると思います。
すること(それは同様負#Sのために働く)小数の桁の#を見つけるために解析するのではなく、ゼロを探して使用して、この機能を試してみてください:
private static string GetTwoFractionalDigitString(double input)
{
// Parse exponential-notation string to find exponent (e.g. 1.2E-004)
double absValue = Math.Abs(input);
double fraction = (absValue - Math.Floor(absValue));
string s1 = fraction.ToString("E1");
// parse exponent peice (starting at 6th character)
int exponent = int.Parse(s1.Substring(5)) + 1;
string s = input.ToString("F" + exponent.ToString());
return s;
}
最初のものは四捨五入によるもの0.00046、可能でしょうか? –
もしあなたが45.2500001342を得れば、あなたはそれが45.25になりたいですか? – craig1231
文字列か小数点以下は? – Jorge