C语言 以特定精度将小值与零进行比较



我有一个程序,它打印出一个值非常小的矩阵。我的矩阵的一个例子是

0.00000000000000004  0.12300000000000000
0.00000000011111114  0.00000000000038544

我想做的是将每个值与zero进行比较,并接受以特定精度(即小数点后 9 位)zero。换句话说,如果一个数字的第一个十进制值有 9 zeros,我想将其视为zero,否则不会。

我搜索了很多,但真的一无所获。有什么想法吗?

正如我在评论中指出的,您可以通过 -1e-9 < f < 1e-9 简单地比较浮点数f

您需要正负

边界,以确保它对正数和负数正常工作。您使用 1e-9 而不是 1e-10因为如果一个数字小于 1e-9 ,一个小数点后 8 位的数字 0,那么它有 9 位小数或更多的零。

请注意,由于从十进制到二进制时1e-9的浮点舍入,您可能会看到一些舍入错误。

我的想法与@MicroVirus在他的评论中提到的相似。您可以简单地将其与特定数字进行比较:

if(num < 1E-9 && num > -1E-9)
    num = 0;

if(num * 1E9 < 1 && num * 1E9 > -1)
    num = 0;

相关内容

  • 没有找到相关文章

最新更新