首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> C語言 >> C++ >> 關於C++

C++ log10 函數妙用:快速求數字位數

     編輯:關於C++

一、場景

求兩數之和的十進制位數。傳統方法用循環除 10 計數,但 log10 可 O(1) 解決。

二、原理

log10(x) 返回 x 的以 10 為底對數。
- log10(100) = 2 → 3 位數
- log10(999) ≈ 2.999 → 取整得 2 → 3 位數
公式:位數 = (int)log10(x) + 1 (x > 0)

三、代碼示例

#include 
#include 
using namespace std;

int main() {
    int a, b;
    while (cin >> a >> b) {
        int sum = a + b;
        int digits = (sum == 0) ? 1 : (int)log10(sum) + 1;
        cout << digits << endl;
    }
    return 0;
}

四、注意事項

  • log10(0) 未定義,需特判
  • 浮點精度可能導致邊界誤差(如 1000 算出 2.999999),可加微小 epsilon:(int)(log10(x) + 1e-10) + 1
  • C++ 還提供 log2()、log10l() (long double)、log10f() (float)

善用數學庫函數能大幅簡化代碼。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved