2016-05-30 1 views
0

これは良いか悪いかを問わず、JavaScriptプログラマは通常、1つまたは複数の整数型の精度が定義されている通常の分業体系を持たず、1つ以上の浮動小数点数型おそらく変化する精度のものが定義される。その代わりに、数値は丸め誤差のない純粋な整数型のように振る舞います。ある範囲内で整数を使用する限り1 + 2!== 3ですが、浮動小数点のように振る舞います。整数値または結果(1.23または1/2など)。Djangoのモデルのフィールドタイプには、JavaScriptの数字のように動作するフィールドがありますか?

DjangoでJavaScript番号のように動作するフィールドタイプはありますか?彼らが組み込まれていないが誰かのパッケージで利用可能な場合、そのパッケージは何ですか?

ありがとう、

+0

「ふるいにふれる」という意味を広げることができますか?ユーザーに提示されたときのフォーマットについて具体的に話していますか?もしそうなら、それは単にデータベース/ Pythonレベルで浮動小数点型を使用し、それをテンプレートレベルでカスタムフィルタに渡すという問題かもしれません。 –

+0

Mm、要求の背後にある私の本来の意図を変更する:内部表現が何であれ、エンドユーザの効果は、整数として表示されるものが整数として表示され、ほとんどの浮動小数点値は浮動小数点として表示されます算術における不正確さが足りなくなる条件の下で、私は標準的な浮動小数点数が小さな範囲で3のような整数を格納していない場合、いくつかのイプシロン値に対して整数にほぼ等しいかどうかをテストすることは、政府の仕事にとって十分であると思います。 – JonathanHayward

答えて

1

いいえ、ありません。

Djangoのモデルフィールドは、データベースのネイティブタイプを使用してデータベースにデータを格納します。 "フィールドタイプ"の目的は、Djangoに "これを保存するときは、このタイプとして保存してください"と伝えることです。また、格納された値をネイティブのPython型にマップする方法も指定します。

Postgresのようなデータベースは "magic" Numberストレージタイプを持たないので、Pythonにはネイティブの "magic" Number型がないので、Djangoフィールド型を持つことは意味がありません。マジックタイプを表しています。

代わりに、データを格納するために整数型を選択し、そのフィールドを読み書きするたびに固定する必要があります。

0

私は、あなたが何をしているのかを知る最も簡単な方法は、格納用にFloatField、表示用にカスタムテンプレートフィルタを使用することだと思います。

浮動小数点浮動小数点数はis_integer() methodであり、浮動小数点数が整数と正確に等しいかどうかを簡単に判断できます。

def intify(value): 
    return int(value) if value.is_integer() else value 

別のオプションは、FloatFieldから継承し、特定の値に応じて、Pythonのintまたはfloatいずれかに値を変換custom model fieldを書くことへの希望:あなたのtemplate filterは、次のようになります。しかし、intfloatの動作が異なるため、基になるPython型を変更することには注意が必要です。

関連する問題