大數相除,保留小數後18位。
例如:6666666666666/555555555555555=0.011999999999998812
輸入:如例子所示的兩個「大數」,用空格隔開。數字範圍在 10~20 位之間。 輸出:計算結果(小數點後面保留 18 位)
**:#include
#include
using
namespace
std;
char b[22];
int k = 0;//記錄小數點後的位數
int p = 0;
int sff[20][20];//記錄每次相除的結果,及對應每次相差的位數
int len3;//除數的長
void
divide
(char a[22], char m[22], int, int, int)
;//將被control函式控制了位數的除數與被除數進行除法運算,並將得到的餘數作為被除數,返回到control函式中
void
control
(char a[22], char b[22], int, int)
;//控制除數一直比被除數小一位
void
divide
(char a[22], char m[22], int c, int len1, int len2)
} for (i = len1 - 1; i >= 0; i--)
}len1 = i + 1;//重新確認一下被除數的大小
if (len1 <= len2)//判斷一下被除數是否還夠減,若不夠跳出迴圈
else
break;}}
if (yes)
}else
}} sff[p][0] = l;//記錄一下每一次相除的結果
sff[p][1] = c;//記錄一下每一次相除的餘數,與除數相差的位數
p++;
if (!len1)//如果提前整除了,結束
if (c <= 0)
if (k <-18)//如果結果超過了小數點後18位,結束
return;
for (i = len1 - 1, j = 0; i >= 0; i--, j++)
a[j] = '\0';
control(a, b, len1, len3);
}void
control
(char a[22], char b[22], int len1, int len2)
//將除數複製一下
m[len2] = '\0';
if (len1 >= len2)//補零,控制除數比被除數小一位
else
m[len2] = '\0';
} }else }
divide(a, m, c, len1, len2);
}int
main
();//儲存結果
cin >> a;
cin >> b;
len1 = strlen(a);
len3 = strlen(b);
op = len1 - len3;
control(a, b, len1, len3);
for (i = 0; i < p; i++)//儲存結果
if ((sff[i - 1][1] - sff[i][1] - 1) > 0)
result[m] = sff[i][0] / 10;
m++;
result[m] = sff[i][0] % 10;
}else
if ((sff[i - 1][1] - sff[i][1] - 1) > 0)
result[m] = sff[i][0];
} } else
//等於或小於的情況
if (sff[i][1] == 0)
else
}for (j = 0; j < -sff[i][1]-1; j++)
result[m] = sff[i][0] / 10;
m++;
result[m] = sff[i][0] % 10;
}else
k = m;
}else
k = m;}}
for (j = 0; j < -sff[i][1]; j++)
result[m] = sff[i][0];
}} m++;
} for (i = 0; i < m; i++)
else
cout
<< ".";
yes = 1;
} if (yes)//控制到小數點後18位
r++;
cout
<< result[i] ;
if (r == 18)
break;
} if (r < 18)//控制到小數點後18位,提前整除的情況
for (i = r; i < 18; i++)
}return0;}
scala 保留小數
scala 中的double型別資料在輸出到csv或其他資料檔案時,如果小數字過長會出現類似於3.573914050694557e 4這樣的數值,這在讀取該資料檔案時處理非常不方便。為了解決該問題,可在儲存檔案前就將該資料格式進行轉換,只保留指定位的小數。方法1 val pi double scal...
postgreSQL保留小數
1 例子 postgres select 1 4 column?0 1 row 在pg裡如果想做除法並想保留小數,用上面的方法卻行不通,因為 運算結果為取整,並且會截掉小數部分。2 型別轉換 postgres select round 1 numeric 4 numeric,2 round 0.25...
JS保留小數方法
js保留小數的方法如下 以保留兩位為例 1 tofixed 方法 需注意,保留兩位小數,將數值型別的資料改變成了字串型別 1.四捨五入 var num 1.7321 num num.tofixed 2 console.log num console.log typeof num string2 ma...