Python hyperfile write/read float32
-
On 05/06/2016 at 07:49, xxxxxxxx wrote:
User Information:
Cinema 4D Version: R17
Platform: Windows ;
Language(s) :---------
When writing out and reading floats I noticed a difference between write/read float32 and write/read float64.
I have included code using the 32 variant. The double precision seems to work OK, but I would expect that while less precise, the 32 bit variant to "closely" match the expected value.Write/Read Float32
writing -> version: 0.4
reading -> version: -1.58818683921e-23Write/Read Float64
writing -> version: 0.4
reading -> version: 0.4def WritePreset(self) :
testversion = 0.4
folder, filename = os.path.split(__file__)
fn = os.path.join(folder, 'preset')
hf = c4d.storage.HyperFile()
if hf.Open(ident=12345, filename=fn, mode=c4d.FILEOPEN_WRITE, error_dialog=c4d.FILEDIALOG_NONE) :
print 'writing -> version:', testversion
if not hf.WriteFloat32(testversion) :
print 'Failed writing'
hf.Close()
else:
print 'Failed open hyperfile', hf.GetError()
return
def ReadPreset(self) :
folder, filename = os.path.split(__file__)
fn = os.path.join(folder, 'preset')
hf = c4d.storage.HyperFile()
if os.path.isfile(fn) and hf.Open(ident=12345, filename=fn, mode=c4d.FILEOPEN_READ, error_dialog=c4d.FILEDIALOG_NONE) :
ver = hf.ReadFloat32()
print 'reading -> version:', ver
hf.Close() -
On 13/06/2016 at 06:34, xxxxxxxx wrote:
Hi,
you have found a bug in the argument parsing of WriteFloat32(). Sorry!
The only workaround I have for now is to use WriteFloat64() instead. The bug will be fixed in one of the next releases. -
On 15/06/2016 at 12:19, xxxxxxxx wrote:
Thank you Andreas