大數相除 保留小數

2021-08-15 16:54:37 字數 2490 閱讀 1652

大數相除,保留小數後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...