前提・実現したいこと
・入力した数値データを計算し、その結果をファイルに出力するプログラムを作成したい。(質問箇所は入力部分のみ)
・変数に15桁以上の数値を格納したい
発生している問題・エラーメッセージ
・139.66713225333334 という値を入力した際に 139.667132253333 のように丸め込まれてしまう
・入力データを用いて計算するのに数値型で辞書に保存したいのだがstr型で格納される
###サンプルコード(元のプログラムと少し変更ありだが、ほぼ同じ)
views.py
from django.shortcuts import render from django.http import HttpResponse from .forms import HelloForm def index(request): params = { 'form': HelloForm() } if request.method == 'POST': number = request.POST['number'] attr = dict() attr['number'] = number return render(request, 'app/index.html', params)
forms.py
from django import forms class HelloForm(forms.Form): number = forms.DecimalField( label='number', max_digits=30, decimal_places=20 )
index.html
<!doctype html> <html lang="ja"> <head> <meta charset="utf-8"> <title>hello</title> </head> <body> <form action="{% url 'index' %}" method="post"> {% csrf_token %} {{ form }} <input type="submit" value="click"> </form> </body> </html>
補足情報
{'number':139.66713225333334} と値を格納したいが
{'number':'139.667132253333'}と格納されている状態。
↑数値の後半が丸め込まれている。
↑数値に''が付いている。
データベースの問題なのでしょうか…。ちなみにデータベースについてはテンプレート作成時にアプリを追加したのみで全くいじっておりません。(SQLiteのまま)
※モデルの定義はなし
ご回答いただけると幸いです。
※前別サイトにて質問した際、一応DecimalFieldを使えば可能といわれたのですが、上手くいかないのは何故でしょうか。
※request.POST を表示すると
QueryDict:{'…':['…'],'number':['139.667132253333']}
回答5件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2018/08/10 00:51
2018/08/12 03:33 編集
2018/08/16 08:25
2018/08/16 10:32
2018/08/17 02:37 編集
2018/08/17 09:38 編集
2018/08/17 10:17