へ:https://www.h-schmidt.net/FloatConverter/IEEE754.htmlPythonのフロートこのwebisteに見られるように32ビットの数が限られ
私は、スタックオーバーフローの5かそこらの記事に目を通してきたが、彼らは私が探していますどのような非常にではありません。例:
import struct
getBin = lambda x: x > 0 and str(bin(x))[2:] or "-" + str(bin(x))[3:]
def floatToBinary64(value):
val = struct.unpack('Q', struct.pack('d', value))[0]
return getBin(val)
def binaryToFloat(value):
hx = hex(int(value, 2))
return struct.unpack("d", struct.pack("q", int(hx, 16)))[0]
# floats are represented by IEEE 754 floating-point format which are
# 64 bits long (not 32 bits)
# float to binary
binstr = floatToBinary64(NUMBER)
print('Binary equivalent of .1:')
print(binstr + '\n')
# binary to float
fl = binaryToFloat(binstr)
print('Decimal equivalent of ' + binstr)
print(fl)
これは私が探しているものにかなり近いことがわかります。あなたがnumberがこのコードに.1を入れると、それは.1としてそれを列挙しますが、ウェブサイトには私には0.10000000149011612が与えられます。
誰でも助けてもらえると嬉しいです!
どのウェブサイトから回答が得られますか?編集:申し訳ありませんが、トップに... duh – BretD
なぜタイトルは32と言うのですか? –
私はまだ質問について混乱しています...だから、ウェブサイトは32ビットの浮動小数点数で、Pythonは64ビットの浮動小数点数を使用しています。なぜ値が異なるのか混乱していますか? – BretD