许多使用IEEE 754双精度的编程语言提供了一个库函数来将这些双精度转换为字符串.例如,C有sprintf,C++有stringstream,Java有Double.toString,等等.
在内部,这些功能是如何实现的?也就是说,他们使用什么算法将double转换为字符串表示,因为它们经常受到程序员选择的精度限制?
谢谢!
我需要写一些numpy浮动到一个csv文件,它有额外的字符串内容.因此我不使用savetxt等与numpy.set_printoptions()我只能定义打印行为,但不能定义str()行为.我知道我错过了一些东西并且它不能那么难,但我没有在互联网上找到合理的答案.也许有人可以指出我正确的方向.下面是一些示例代码:
In [1]: import numpy as np
In [2]: foo = np.array([1.22334])
In [3]: foo
Out[3]: array([ 1.22334])
In [4]: foo[0]
Out[4]: 1.2233400000000001
In [5]: str(foo[0])
Out[5]: '1.22334'
In [6]: np.set_printoptions(precision=3)
In [7]: foo
Out[7]: array([ 1.223])
In [8]: foo[0]
Out[8]: 1.2233400000000001
In [9]: str(foo[0])
Out[9]: '1.22334'
Run Code Online (Sandbox Code Playgroud)
如何将np.float转换为格式良好的字符串,我可以将其提供给file.write()?
亲切的问候,
fookatchu