まず、コードに問題があります。私はあなたのコードを取り、これを実行した場合:
print(your_trim(1.1))
print(your_trim(1.0566))
print(your_trim('1cm'))
出力は次のとおりです。
1.1
1 <-- this is dangerous, the value is 1.0566!
1cm <-- this is not even a number
コメンターが述べたように、あなたは浮動小数点数と整数不整合することができます。名前が示すように、integer
には小数点以下桁がありません。
def strip_trailing_zeroes(num):
if isinstance(num, float):
if int(num) == num:
return int(num)
else:
return num
else:
raise ValueError("Parameter is not a float")
テストコード:
print(strip_trailing_zeroes(1.1))
print(strip_trailing_zeroes(1.0566))
print(strip_trailing_zeroes(1.000))
print(strip_trailing_zeroes('1cm'))
あなたの目標イストはとないラウンド(何らかの理由で)float
int
に末尾のゼロを取り除くためにする場合は、このアプローチのようなものを使用する場合があります出力を返します。
1.1
1.0566
1
Exception with "ValueError: Parameter is not a float"
他のコメント作成者のように、私は想像がつきませんこのユースケース
あなたはかもしれません。は、フロートの「文字列表現」から末尾のゼロをトリミングします。このため、単純な正規表現の置換で十分です:
# match a decimal point, followed by one or more zeros
# followed by the end of the input
print(re.sub('\.0+$', '', '2.000'))
あなたの質問は意味をなさないです。 2.000は2.0と同じです。あなたは「整数から小数点以下を辿る」ことについて話しますが、整数は小数点以下桁を持ちません。 – wim
内部表現を持つ施設はありません。トリミング可能な小数点以下の桁は、値を印刷するときなど、文字列表現にのみ存在します。これは簡単なボルワーサー検索で見つけることができる文字列フォーマットの問題です。 – Prune