我有一个程序可以打印出一个值非常小的矩阵。我的矩阵的一个例子是
0.00000000000000004 0.12300000000000000
0.00000000011111114 0.00000000000038544
我想做的是将每个值与 零
进行比较,并接受它为 零
并具有特定的精度,即小数点后 9 位。换句话说,如果一个数字有 9 个 零
作为它的第一个十进制值,我想将它视为一个 零
,否则不是。
我搜索了很多,但真的一无所获。有什么想法吗?
最佳答案
正如我在评论中指出的那样,您可以简单地比较 float f
通过-1e-9 < f < 1e-9
.
您需要正边界和负边界,以确保它适用于正数和负数。您使用 1e-9
而不是 1e-10
因为如果一个数字小于 1e-9
, 一个有 8 个小数位 0 的数,那么它有 9 个或更多个小数位的零。
请注意,由于 1e-9
的 float 舍入从十进制转换为二进制时,您可能会看到一些舍入错误。
关于以特定精度将小值与零进行比较,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36822096/