C中的舍入值小于1?

时间:2013-07-21 22:40:36

标签: c floating-point

我在C中编写一个图形程序,我的笛卡尔值介于[-1,1]之间,我在舍入值时遇到了麻烦,因此我可以将它们用于绘图和进一步计算。我知道如何使用小数来舍入大于1的值,但我以前没有这样做过。

那么我该如何围绕价值观呢?例如,

.7213=.7

.7725= .8

.3666667=.4

.25=.2 or .3

.24=.2

任何建议都会很高兴。 :)

2 个答案:

答案 0 :(得分:7)

您不能(并且不能,任何高精度,由于存储浮点值)圆形浮点值,您只能将它们输出到不同的精度。如果您希望在计算中使用它们之前将所有浮点值四舍五入到小数点后1,那么使用整数进行计算,将所有内容乘以10,然后在显示之前除以10。

答案 1 :(得分:1)

在大多数语言中,人们经常使用*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