Hacktoberfest 2026: những issue maintainer đã đánh dấu cho tháng Mười, đang mở và phù hợp người mới. Xem issue Hacktoberfest

BigInteger Log10 can produce incorrect result

Đang mở Phù hợp với người mới
#134,654 1 bình luận 0 reaction 0 người được giao Xem trên GitHub

Maintainer thường phản hồi trong vòng 1 ngày

Chưa có ai nhận issue này.

Đánh giá

Độ khó
2/5
Thời gian dự kiến
1-3 giờ
Mức phù hợp với người mới
88/100
Loại issue
Lỗi
Độ rõ ràng
Đặc tả rõ ràng
Mức độ hoạt động
Sôi nổi
Công nghệ
csharp
Lĩnh vực
backend

Hướng nghiên cứu

Bắt đầu tại vị trí BigInteger.cs được liên kết trong issue và tái hiện các lệnh gọi generic và trực tiếp đến BigInteger.Log10 với BigInteger.Pow(10, 21306). Kiểm tra hệ số được sử dụng cho phép ước tính và xác minh rằng lệnh gọi generic trả về 21306 mà không thay đổi kết quả chính xác của lệnh gọi trực tiếp.

Do mô hình lập chỉ mục viết ra từ nội dung của issue.

Mô tả

area-System.Numerics untriaged
Description

BigInteger BigInteger.Log10 can produce an incorrect result for the IBinaryInteger<T> implementation. The coefficient 1292913986 / 2^32 is slightly below log10(2), so the estimate can be too small.

Reproduction Steps
using System;
using System.Numerics;

static T IntegerLog10<T>(T value) where T : IBinaryInteger<T> => T.Log10(value);

Console.WriteLine(IntegerLog10(BigInteger.Pow(10, 21306))); // Incorrect, prints 21305
Console.WriteLine(BigInteger.Log10(BigInteger.Pow(10, 21306))); // Correct, prints 21306
Expected behavior

Both should print 21306.

Actual behavior

The first invocation prints 21305, the second line is 21306.

Regression?

No, this API is new in .NET 11.

Known Workarounds

No response

Configuration

.NET SDK:
Version: 11.0.100-rc.1.26425.128
Commit: 3551975be0
Workload version: 11.0.100-manifests.a6e318ce
MSBuild version: 18.11.0-1.26425.128+3551975be

Runtime Environment:
OS Name: Mac OS X
OS Version: 27.0
OS Platform: Darwin
RID: osx-arm64
Base Path: /usr/local/share/dotnet/sdk/11.0.100-rc.1.26425.128

Other information

This appears to be off-by-one. https://github.com/dotnet/runtime/blob/0598ca0a45c1f29be94f889a1fc6e9b30c40ea64/src/libraries/System.Runtime.Numerics/src/System/Numerics/BigInteger.cs#L3958

it should probably be 1292913987L not 1292913986L.

Ngôn ngữ chính
C#
Star
18.3k
Fork
5.6k
Merge trung bình
2 ngày 17 giờ
Pull request đã merge (30 ngày)
615

Chuẩn bị môi trường

Bắt đầu từ đâu

  1. Đọc hết issue, rồi đọc hướng dẫn đóng góp của dự án.
  2. Bình luận trên issue rằng bạn sẽ nhận — tránh hai người làm cùng một việc.
  3. Fork repository và làm thay đổi trên một nhánh.
  4. Mở pull request có tham chiếu số hiệu của issue.

Issue khác của dotnet/runtime

Tất cả issue của dotnet/runtime

Issue tương tự

Thêm issue về C#

Nhận issue mới trong hộp thư của bạn

Bản tóm tắt ngắn những issue GitHub phù hợp với người mới.