13

すべての値を小数点以下第2位に四捨五入する必要があります。したがって、1.401は1.40に丸める必要がありますがMath.Round(value, 2)、1.4に丸めます。

末尾のゼロを強制するにはどうすればよいですか?

4

8 に答える 8

29

1.4と同じ1.40です-あなたはそれを異なって表示したいだけです。呼び出すときにフォーマット文字列を使用するToString-likevalue.ToString("0.00")

于 2012-09-06T20:11:51.323 に答える
14

1.4 == 1.40末尾の0が必要になるのは、数値を表示するときだけです。つまり、文字列にフォーマットします。

.ToString("N2");
于 2012-09-06T20:11:35.940 に答える
6

末尾のゼロは、値の問題というよりもフォーマットであるため、次を使用します。

foo.ToString("0.00")
于 2012-09-06T20:11:57.200 に答える
6

これは古い質問ですが、誰かを助けるかもしれません!

ac#xmlクラスを使用してデータを入力し、xmlにシリアル化します。値の1つはdoubleです。値に「7」を割り当てると、実際に「7.00」が必要になったときに、これは「7」にシリアル化されます。これを回避する最も簡単な方法は、次のことです。

foo = doubleValue + 0.00M

これにより、値は7ではなく7.00になります。これは、ToStringを実行してから、解析して戻すよりも優れていると考えました。

于 2017-05-04T19:15:37.380 に答える
4

末尾のゼロは単なるプレゼンテーションです。数学的には、1.401.4同等です。

代わりにフォーマットを使用して、小数点以下2桁で表示します。

String.Format("{0:0.00}", 1.4);

or

yourNumber.ToString("0.00");
于 2012-09-06T20:12:27.157 に答える
2

これは、小数を使用するか倍精度を使用するかと関係があります。

内部的に(ソースコードからわかるように)Math.Round()、doubleでも末尾のゼロが保持されますが、それでもメモリにdoubleとして保存されるという事実により、末尾のゼロはすべて自動的に削除されます。

したがって、末尾のゼロが必要な場合は、文字列表示関数を使用して他の人が回答したとおりにフォーマットするか、元の値を小数として渡すようにしてください(内部Decimal.Math.Roundで使用すると、小数のみが処理されます)。結果をdoubleにキャストしたり、double変数に保存したりしないように注意してください。

同様に、小数があり、末尾のゼロが必要ない場合は、それをdoubleにキャストします(入力Math.Roundまたは結果のいずれかをキャストできます。それがdoubleになる方法のどこかにある限り、問題ではありません。 )。

于 2018-01-30T16:57:06.750 に答える
1

これは数値(double?)であるため、末尾のゼロはありません。テキストにして末尾のゼロを強制する必要があります。

于 2012-09-06T20:12:45.973 に答える
0

ラウンド関数の代わりにこの関数を使用して、ラウンド関数を使用するのと同じように使用できます。

import decimal

def printf(x, n):
    d = decimal.Decimal(str(x))
    d0 = -(d.as_tuple().exponent)
    if d0 < n:
        print("x = ", x)
    else:
        d1 = decimal.Decimal(str(round(x, n)))
        d2 = d1.as_tuple().exponent
        MAX = n + d2
        if MAX == 0:
            print("x = ", round(x, n))
        else:
            i = 0
            print("x = ", round(x, n), end = '')
            while i != MAX:
                if i == (MAX - 1):
                    print("0")
                else:
                    print("0", end = '')
                i = i + 1

だからあなたはこのようなものを持っている必要があります。

>>> printf(0.500000000000001, 13)
>>> 0.5000000000000
于 2020-12-30T09:25:02.990 に答える