我正在用 C 编写一个图形程序,并且我的笛卡尔值介于 [-1,1] 之间,我无法将值四舍五入,以便我可以将它们用于绘图和进一步计算。我知道如何用小数对大于 1 的值进行舍入,但这是我以前没有做过的。
那么我将如何进行四舍五入呢?例如,
.7213=.7
.7725= .8
.3666667=.4
.25=.2 or .3
.24=.2
任何建议将不胜感激。:)
我正在用 C 编写一个图形程序,并且我的笛卡尔值介于 [-1,1] 之间,我无法将值四舍五入,以便我可以将它们用于绘图和进一步计算。我知道如何用小数对大于 1 的值进行舍入,但这是我以前没有做过的。
那么我将如何进行四舍五入呢?例如,
.7213=.7
.7725= .8
.3666667=.4
.25=.2 or .3
.24=.2
任何建议将不胜感激。:)
您不(也不能,由于浮点值的存储方式,不能达到任何高精度)对浮点值进行舍入,您只能以不同的精度输出它们。如果您希望在计算中使用它们之前将所有浮点值四舍五入到小数点后 1 位,那么使用整数进行计算,将所有值乘以 10,然后在显示之前除以 10。
在大多数语言中,人们经常使用*10
、整数舍入和/10
. 例如:
$ cat round.c
#include <stdio.h>
#include <stdint.h>
int main()
{
fprintf(stderr, "%f\n", ((double) ((uint64_t) (10*0.7777))) / 10);
return 0;
}
$ gcc round.c
[tommd@Vodka Test]$ ./a.out
0.700000