我正在嘗試制作一個將數字四舍五入到最接近 10 次方的程式,例如,如果輸入為 25378,則輸出應為 25000,或者如果輸入為 438864,則輸出應為 438000。我的代碼適用于第一種情況,但不是第二種情況,有人可以幫助我嗎?
#include <stdio.h>
#include <math.h>
int b(int x)
{
int k;
int m;
//int resultado;
k = log10(x); //4 //5
m = pow(10, k-1); //1000
resultado = (x/m)*m;
return resultado;
}
int test_b()
{
int x;
while(scanf("%d", &x) !=EOF)
{
int z = b(x);
printf("%d\n", z);
}
return 0;
}
int main()
{
test_b();
return 0;
}
uj5u.com熱心網友回復:
您談到了冪,也許您還想將諸如 24 或 105 之類的數字四舍五入到最接近的“冪”(如您所說),在這種情況下,我認為您沒有四舍五入的代碼很明顯,而是“到數字”(我會這樣說是為了更容易理解)它在代碼中是乘法和除法。
正如有人已經說過的那樣,您可以這樣做,但也許您還需要更多東西:
int b(int x)
{
return (x/1000) * 1000;
}
我想你可能也想要像 24 或 106 這樣的整數,所以我認為這是最好的解決方案(但我不確定:))
int b(int x)
{
int num;
if(x<=100)
{
num = (x/10)*10;
}
else if(x>100 && x<1000)
{
num = (x/100)*100;
}
else if (x>=1000)
{
num = (x/1000)*1000;
}
return num;
}
我不知道你是否需要它,但如果你需要它在這里:)
uj5u.com熱心網友回復:
你沒有四舍五入到最接近的 10 次冪。你總是向下四舍五入,而不是最接近的,它總是 1000 的倍數(所以你不需要使用log10()來獲取位數)。
除以 1000 然后乘以 1000。整數除法將簡單地丟棄分數。
int b(int x)
{
return (x/1000) * 1000;
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/516678.html
標籤:C
上一篇:獲取此用戶輸入時我做錯了什么?
