Python格式将numpy.float32转换为Python float

时间:2017-10-31 10:53:54

标签: python string numpy floating-point formatting

我正在输出let replaceInStr = function(str, tokens, length){ let versions = [] versions.push(str) console.log(str) // -> raybradbury la foire defiténébres for (let i = 0; i < length; i++) { // INTELLIGENCE WARNING! // CONSIDER IDENIFYING THE WHOLE PART OF THE STRING THAT LOOKS // LIKE TOKEN NOT JUST TOKEN SO YOU CAN REPLACE IT let token = tokens[i]['token'], suggestion = tokens[i]['suggestions'][0]['suggestion'], regExp = new RegExp(token.trim()), replaced = versions[0].replace(regExp, suggestion) versions.pop() versions.push(replaced) }; console.log(versions[0]) // -> ray bradburyy la foire de ténébress return versions[0] }; 个值并获得以下内容:

numpy.float32

我希望> import numpy as np > a = np.float32(0.1) > a, str(a), repr(a) (0.1, '0.1', '0.1') > '{}'.format(a) '0.10000000149011612' > float(a) 0.10000000149011612 返回'{}'.format(a)

所以我的问题是:

  • 为什么Python '0.1'str.format值转换为Python numpy.float32
  • 我是否可以更改某些设置,使Python float str.format值转换为Python numpy.float32

如果这是相关的:我使用Python 3.4.5和numpy 1.10.4。

1 个答案:

答案 0 :(得分:2)

内部python使用64位浮点数。没有办法改变这一点。与任何浮点数一样,您必须知道有多少位数是重要的。

float32最多有8位有效数字:

print "{:.8g}".format(a)

如果你想使用numpy的字符串格式,你必须显式地转换为字符串:

print "{!s}".format(a)