对于一个小数,如 0.0000000000001 ,想得到相应的字符串,而不是转换为 1e-12 ,可以用 numpy 的 format_float_positional 。

import numpy as np
a = 0.0001
b = 0.00001
c = 0.0000001
d = 0.0000000000001
print("{}, {}".format(a, b))  # 0.0001, 1e-05
print("{}, {:f}".format(a, b))  # 0.0001, 0.000010 <- 后者结尾多了个 0
print("{}, {}".format(str(a), str(b)))  # 0.0001, 1e-05
print("{:.4f}, {:.4f}".format(a, b))  # 0.0001, 0.0000 <- 后者被截断
_a, _b, _c = "{:f}".format(a), "{:f}".format(b), "{:f}".format(c)
_a, _b, _c = _a.rstrip('0'), _b.rstrip('0'), _c.rstrip('0')
print(_a, _b, _c)  # 0.0001 0.00001 0. <- c 精度不够,被截断
print(np.format_float_positional(c, trim='-'))  # 0.0000001 <- 可以
print(np.format_float_positional(d, trim='-'))  # 0.0000000000001 <- 可以

References

  1. How to suppress scientific notation when printing float values?
  2. Formatting floats without trailing zeros
最近迷上了航模,研究了很多东西,感觉路走的长了还是适当要停下脚步休息下总结下。 这次DIY的是一块OSD设备,主要用于航模图传的叠加显示,原理也很简单就是atmel atmega328p+MAX7456芯片,网上卖的成品基本上都是一个原理图。 我按照我自己的需要做了适当的更改,去掉了DC-DC电路,直接用5V输入,因为摄像头都是5V的,所以DC-DC不是很有必要,体积上更加小了点, 打...
多径时延扩展与多径衰落 接收机所接收到的信号是通过不同的直射、反射、折射等路径到达接收机。由于电波通过各个路径的距离不同, 因而各条路径中发射波的到达时间不同,造成多径时延扩展。距离不同所以到达接收机的相位也不相同,不同相位的多个信号在接收端叠加, 如果同相叠加则会使信号幅度增强, 而反相叠加则会削弱信号幅度。 这样,接收信号的幅度将会发生急剧变化,就会产生多径衰落。
golang 线上事故 最近公司要做大促的一些活动。并且单量,qps持续上涨。之前使用的是django python 语言做的一个服务端。目前已经部署的国家里面最多的国家会有300+个实例。大促期间还可能会增加一个实例数。这么多的实例部署,回滚的时间都会特变长,除了问题也不好定位。并且如此多的一个机器,连接数* 实例数也会导致DB等其他服务扛不住这么大的并发。所以决定上go服务解决性能问题。