#include <unistd.h>
#include <stdio.h>
#include <stdlib.h>
#include <fcntl.h>
#include <errno.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <time.h>
#include "../apue.2e/include/apue.h"
#include <sys/socket.h>
#include <netinet/in.h>
#include <arpa/inet.h>
#include <signal.h>
#include <assert.h>
#include <string.h>
#include <limits.h>
void test_1(void)
{
/*
四舍六入五成雙規則:
對于位數很多的近似數,當有效位數确定後,其後面多餘的數字應該舍去,隻保留有效數字最末一位,
這種修約(舍入)規則是“四舍六入五成雙”,也即“4舍6入5湊偶”這裡“四”是指≤4 時舍去,
"六"是指≥6時進上,"五"指的是根據5後面的數字來定,當5後有有效數時(cc_1/cc_2),舍5入1;當5後無有效數字
時(bb_1/bb_2),需要分兩種情況來講:①5前為 奇數,舍5入1;②5前為偶數,舍5不進。(0是 偶數)
下面舉例,用上述規則對下列資料保留3位有效數字:
*/
float aa_1 = 9.8249; // 9.82
float aa_2 = 9.82671; // 9.83
float bb_1 = 9.8250; // 9.82
float bb_2 = 9.8350; // 9.84
float cc_1 = 9.8351; // 9.84
float cc_2 = 9.82501; // 9.83
printf("%.2f\n", aa_1);
printf("%.2f\n", aa_2);
printf("%.2f\n", bb_1);
printf("%.2f\n", bb_2);
printf("%.2f\n", cc_1);
printf("%.2f\n", cc_2);
printf("===================\n");
char xx_1[8];
char xx_2[8];
char yy_1[8];
char yy_2[8];
char zz_1[8];
char zz_2[8];
sprintf(xx_1, "%.2f\n", aa_1);
sprintf(xx_2, "%.2f\n", aa_2);
sprintf(yy_1, "%.2f\n", bb_1);
sprintf(yy_2, "%.2f\n", bb_2);
sprintf(zz_1, "%.2f\n", cc_1);
sprintf(zz_2, "%.2f\n", cc_2);
printf(xx_1);
printf(xx_2);
printf(yy_1);
printf(yy_2);
printf(zz_1);
printf(zz_2);
}
int main(int argc, char* argv[])
{
test_1();
return;
}