summaryrefslogtreecommitdiff
path: root/x68/_round.c
blob: 761930fb8cd516f4d7ab561a3609ffe5ca595425 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
/*
 * PROJECT C Library, X68000 PROGRAMMING INTERFACE DEFINITION
 * --------------------------------------------------------------------
 * This file is written by the Project C Library Group,  and completely
 * in public domain. You can freely use, copy, modify, and redistribute
 * the whole contents, without this notice.
 * --------------------------------------------------------------------
 * $Id$
 */
/* changed 1997.2.2 by K.Okabe */

/* System headers */
#include <stdlib.h>
#include <sys/xstdlib.h>

/* Functions */
int _round (char *top, char *cur, int undig)
{
    char *ptr;

    /* 最後が5未満なら丸めは必要ない */
    if (undig < '5')
	return 0;

    /* ポインタ設定 */
    ptr = cur - 1;

    /* 先頭まで戻りながら丸め処理 */
    while (ptr >= top) {

	/* 繰り上がらなければそれで終わり */
	if (++(*ptr) <= '9')
	    return 0;

	/* その桁を0に戻す */
	*ptr-- = '0';

    }

    /* 先頭を1にする */
    *++ptr = '1';

    /* 繰り上がりをしらせる */
    return 1;
}