, float?
, float.
. , , float, .
, , , , , , .
, :
{: g} {: G}, , , E ). e E, 0s .
, my_float, "{:G}".format(my_float) , Python. , .
- float , , poke , float Decimal.
- , - . 'max_digits' sys.float_info.max_10_exp 14, . import sys - .
:
import math
import sys
def precision_and_scale(x):
max_digits = sys.float_info.max_10_exp
int_part = int(abs(x))
magnitude = 1 if int_part == 0 else int(math.log10(int_part)) + 1
if magnitude >= max_digits:
return (magnitude, 0)
frac_part = abs(x) - int_part
multiplier = 10 ** (max_digits - magnitude)
frac_digits = multiplier + int(multiplier * frac_part + 0.5)
while frac_digits % 10 == 0:
frac_digits /= 10
scale = int(math.log10(frac_digits))
return (magnitude + scale, scale)
f = 0.0000002345E^-60
p, s = precision_and_scale(f)
print "{:.{p}f}".format(f, p=p)
, , Decimal, , , .