2

0.405 のような数値を 0.40 に丸め、0.412 を 0.42 に丸める必要があります。これを行う組み込み関数はありますか?

4

2 に答える 2

5

汎用ソリューションであり、これにより任意の解像度への丸めが可能になります (もちろんゼロ以外ですが、ゼロの解像度はほとんど意味がありません(a) )。あなたのケースで0.02は、テストケースに示されているように、他の値も可能ですが、解決策として提供する必要があります。

# This is the function you want.

def roundPartial (value, resolution):
    return round (value / resolution) * resolution

# All these are just test cases, the first two being your own test data.

print "Rounding to fiftieths"
print roundPartial (0.405, 0.02)
print roundPartial (0.412, 0.02)

print "Rounding to quarters"
print roundPartial (1.38, 0.25)
print roundPartial (1.12, 0.25)
print roundPartial (9.24, 0.25)
print roundPartial (7.76, 0.25)

print "Rounding to hundreds"
print roundPartial (987654321, 100)

これは以下を出力します:

Rounding to fiftieths
0.4
0.42
Rounding to quarters
1.5
1.0
9.25
7.75
Rounding to hundreds
987654300.0

(a)この可能性に対処する必要がある特定のパーソナリティ障害がある場合は、希望する解像度の倍数である最も近い数を求めていることに注意してください。N0 の倍数である(任意の の )に最も近い数Nは常に 0 であるため、次のように関数を変更できます。

def roundPartial (value, resolution):
    if resolution == 0:
        return 0
    return round (value / resolution) * resolution

または、解決策としてゼロを渡さないように約束することもできます:-)

于 2013-07-15T01:27:06.483 に答える