web-dev-qa-db-ja.com

科学表記法を浮動小数点数に変換

JSONデータがフロートではなく科学表記法で出力されるという問題が発生しました。

import urllib2
import json
import sys

url = 'https://bittrex.com/api/v1.1/public/getmarketsummary?market=btc-quid'
json_obj = urllib2.urlopen(url)
QUID_data = json.load(json_obj)

QUID_MarketName_Trex = QUID_data["result"][0]["MarketName"][4:9]
QUID_Last_Trex = QUID_data["result"][0]["Last"]
QUID_High_Trex = QUID_data["result"][0]["High"]
QUID_Low_Trex = QUID_data["result"][0]["Low"]
QUID_Volume_Trex = QUID_data["result"][0]["Volume"]
QUID_BaseVolume_Trex = QUID_data["result"][0]["BaseVolume"]
QUID_TimeStamp_Trex = QUID_data["result"][0]["TimeStamp"]
QUID_Bid_Trex = QUID_data["result"][0]["Bid"]
QUID_Ask_Trex = QUID_data["result"][0]["Ask"]
QUID_OpenBuyOrders_Trex = QUID_data["result"][0]["OpenBuyOrders"]
QUID_OpenSellOrders_Trex = QUID_data["result"][0]["OpenSellOrders"]
QUID_PrevDay_Trex = QUID_data["result"][0]["PrevDay"]
QUID_Created_Trex = QUID_data["result"][0]["Created"]
QUID_Change_Trex = ((QUID_Last_Trex - QUID_PrevDay_Trex)/ QUID_PrevDay_Trex)*100
QUID_Change_Var = str(QUID_Change_Trex)
QUID_Change_Final = QUID_Change_Var[0:5] + '%'

print QUID_Last_Trex   

次の値を出力します。 1.357e-05。これは、小数点以下8文字の浮動小数点数である必要があります(0.00001370)

ここにあるように-> http://i.imgur.com/FCVM1UN.jpg の場合、GUIには最初の行が正確に表示されます(まったく同じコードを使用)。

29
Loops

浮動小数点数のdefault str() formatingを見ています。科学表記法が十分に小さいまたは大きい数に使用されます。

これを変換する必要はありません。値自体は適切な浮動小数点数です。これを別の形式で表示する必要がある場合は、 format itexplicitly

_>>> print 0.00001357
1.357e-05
>>> print format(0.00001357, 'f')
0.000014
>>> print format(0.00001357, '.8f')
0.00001357
_

ここで、f形式alwaysは、値に固定小数点表記を使用します。デフォルトの精度は6桁です。 _.8_は、代わりに8桁を表示するようfフォーマッターに指示します。

デフォルトの文字列形式は、基本的にformat(fpvalue, '.12g')と同じです。 g形式は、数値の指数に応じて科学的または固定小数点の表示を使用します。

44
Martijn Pieters

印刷フォーマットを使用できます:

x = 1.357e-05    
print('%f' % x)

編集:

print('%.08f' % x)
3
Evgeny Prokurat