在 C 语言中,求π的精确值有多种方法。下面是一种使用 BBP 公式的方法:
#include <stdio.h> #include <stdlib.h> #include <string.h> #include <math.h>
// 十进制转换为十六进制 char* dec2hex(int dec, int len) { char* hex = (char*)malloc(len); for (int i = 0; i < len; i++) { hex[len - 1 - i] = fmod(dec, 16) + (fmod(dec, 16) < 10 ? '0' : 'A' - 10); dec = floor(dec / 16); } return hex; }
// 十六进制转换为十进制 int hex2dec(char* hex, int len) { int dec = 0; for (int i = 0; i < len; i++) { dec += (hex[i] < 'A' ? hex[i] - '0' : hex[i] - 'A' + 10) * pow(16, len - 1 - i); } return dec; }
// 将小数点后第 n 位向左移动 k 位 char* shift(char* num, int n, int k) { int len = strlen(num); char* result = (char*)malloc(len + k); for (int i = 0; i < len; i++)