2016-12-03 26 views
1

方法I出力Djangoのテンプレートでは、この数(小数点以下の桁数が可変であると私は事前にそれを知っていない)ことができます:Djangoのテンプレート:すべての小数点以下の桁と出力フロート

x = 0.000015 

1)

{{x}} 

出力は次のとおり

1,5e-05 

2)

{{x|stringformat:"f"}} 

出力は次のようになります。ローカライズされていません

0.000015 

、カンマがあるはず!出力をローカライズし、小数点以下をすべて保持する必要があります。

私はdjangoが組み込みのツールを使ってこのような単純なタスクを処理することはできません。

UPDATE:

LANGUAGE_CODE = 'ru' 
USE_L10N = True 

とデフォルトDjangoの出力は、浮動小数点数のほとんどのために正常に動作し、それが唯一のこの小さな数に失敗します。 私は、正しい設定が既に持っています。指数表記で出力しますが、すべての小数点以下の桁数(小数点以下の桁数は可変です)として出力する必要があります。

答えて

0

ロケールの設定が間違っているために発生します。 Djangoのフォーマットシステムを使用する場合は、テンプレートの日付と番号が現在のロケール用に指定されたフォーマットを使用して表示されます


Djangoの局在化は、現在のロケール設定(Format Localization)を使用して動作します。

これを修正するには、正しいロケールを設定する必要があります。これは、カンマのためにpt_BRだとしていますが、正しいロケールであれば使用できます。

は、あなたの設定にこれを追加しよう:

LANGUAGE_CODE = 'pt-BR' 
USE_L10N = True 

してから再実行してコード

+0

私の場合、LANGUAGE_CODE = 'ru')の設定は既にありますが、これは他のすべての浮動小数点数でも動作しますが、この小さなものでは失敗します - 指数表記が不要な出力 – Sergey

+0

ロシア語の有効なコードである "ru-RU"に設定し、 'import locale; locale.setlocale(locale.LC_ALL、" ru_RU.UTF-8 ")'をコマンドラインで実行してインストールされているかどうかを確認します。 –

+0

私はLANGUAGE_CODE = 'pt-BR'を試したこともあり、それでも '1,5e-05'として出力します。 – Sergey

0

あなたは数字の長さを知っている場合は、floatformatフィルタを使用しようとすることができます:

{{ x|floatformat:6 }} 

ここで、6は小数点以下の桁数です。

+0

質問:小数点以下の桁数が可変です。私はそれを前もって知らない。 – Sergey

0

私は完全に正常に動作する別の解決策を見つけました。

まずDecimalFieldはFloatFieldに変換:

some_value = models.DecimalField(max_digits=20, decimal_places=15) 

、次にテンプレートの出力を次のよう

{{x.some_value.normalize}} 

ように、それは0」として0.000015を出力もたらします。000015 "

関連する問題