Khi tôi sử dụng toán tử% trên các giá trị float, tôi nhận được lỗi nói rằng "toán hạng không hợp lệ thành nhị phân% (có 'float' và 'double')". giá trị chỉ nhưng số lượng rất lớn (không phải trong phạm vi của loại int) để tránh sự bất tiện tôi sử dụng float.Is có cách nào để sử dụng toán tử% trên các giá trị số nguyên lớn như vậy ????Cách sử dụng% toán tử cho các giá trị float trong c
Trả lời
Bạn có thể sử dụng hàm fmod
từ thư viện toán chuẩn. Nguyên mẫu của nó nằm trong tiêu đề chuẩn <math.h>
.
Có lẽ bạn nên sử dụng long long
, có độ chính xác cao hơn double
ở hầu hết các hệ thống.
Lưu ý: Nếu số của bạn lớn hơn long long
có thể giữ, thì fmod
có thể sẽ không hoạt động theo cách bạn muốn. Trong trường hợp đó, đặt cược tốt nhất của bạn là thư viện bigint, chẳng hạn như this one.
BigIntegerLibrary không được chấp nhận trong c ??? Hơn nữa, số% specifier cho số nguyên lớn ??? –
Xin lỗi, thư viện tôi đề xuất là C++. –
xem xét: int 32 bit và int lâu dài của 64 bit
Vâng,% (modulo) điều hành không được làm việc với phao nổi và đôi .. nếu bạn muốn làm các phép toán module trên số lượng lớn bạn có thể kiểm tra long long int(64bits)
điều này có thể giúp bạn.
vẫn là phạm vi vắt hơn 64 bit trong trường hợp đó, bạn cần lưu trữ dữ liệu trong chuỗi .. và thực hiện thao tác modulo theo thuật toán.
hoặc một trong hai bạn có thể đi đến bất kỳ ngôn ngữ kịch bản như trăn
Nhà điều hành %
chỉ được định nghĩa cho kiểu dữ liệu integer toán hạng; bạn sẽ cần phải sử dụng các chức năng thư viện fmod*
với nhiều loại dấu chấm động:
#include <math.h>
double fmod(double x, double y);
float fmodf(float x, float y);
long double fmodl(long double x, long double y);
Nếu bạn muốn sử dụng việc sử dụng int lâu dài, không sử dụng một định dạng đó là phi lý tưởng cho vấn đề của bạn nếu một định dạng tốt hơn tồn tại.
Khi tôi đã không có dễ dàng truy cập vào fmod
hoặc các thư viện khác (ví dụ, làm một Arduino phác thảo nhanh), tôi thấy rằng các công trình sau đây cũng đủ:
float someValue = 0.0;
// later...
// Since someValue = (someValue + 1) % 256 won't work for floats...
someValue += 1.0; // (or whatever increment you want to use)
while (someValue >= 256.0){
someValue -= 256.0;
}
- 1. so sánh giá trị float/double bằng cách sử dụng toán tử ==
- 2. Giá trị trả về của toán tử "==" trong C
- 3. Giá trị float cực đại trong php
- 4. Cách thay thế bằng cách sử dụng toán tử% và/Toán tử trong C++
- 5. Làm thế nào để sử dụng toán tử ternary của C# với hai giá trị byte?
- 6. Cùng một giá trị cho id (float)
- 7. sử dụng các toán tử bitwise để đóng gói nhiều giá trị trong một int
- 8. cách tính toán nhắc nhở phao cho hai giá trị float
- 9. Cách sử dụng toán tử Delphi "in" trong C++ Builder
- 10. Sắp xếp một cột VARCHAR như FLOAT bằng cách sử dụng toán tử CAST không hoạt động trong MySQL
- 11. Toán tử C++() và 'sử dụng' Tuyên bố: Toán hạng trái phải là lỗi giá trị l
- 12. Tại sao toán tử gia tăng cho giá trị gia tăng trong C?
- 13. Chúng ta không thể sử dụng các phép toán nguyên tử cho các biến số dấu chấm động trong CUDA?
- 14. Giá trị trả về của toán tử ++
- 15. trả về các giá trị khác nhau cho c & C++?
- 16. Sử dụng toán tử^trong hình ảnh C++
- 17. Quá tải toán tử subscript "[]" trong l-giá trị và r có giá trị trường hợp
- 18. Tại sao trả về giá trị khác nhau khi sử dụng & toán tử trong JavaScript và C#?
- 19. Vấn đề với giá trị điện toán tính toán bằng cách sử dụng toán học
- 20. Cách đặt giá trị cho các mảng trong c
- 21. Toán tử gán quá tải trong C++
- 22. Tại sao toán tử gán trả về giá trị đã gán trong C#?
- 23. Chúng ta có thể quá tải các toán tử cho các kiểu dựng sẵn như int hay float không?
- 24. Thêm hai mảng giá trị float trong Haskell
- 25. Cách áp dụng toán tử logic cho tất cả các phần tử trong danh sách python
- 26. Tại sao toán tử ++ trả về giá trị không const?
- 27. Bối rối về? toán tử trong C#
- 28. Cách đặt giá trị cho phần tử biểu mẫu bằng cách sử dụng mootools
- 29. Trong C#, tại sao sử dụng kiểu động cho phép tôi sử dụng toán tử trên generics?
- 30. Thiết lập KVO cho các giá trị được tính toán, dựa trên các giá trị được tính toán
Vì vậy, 1,5% 1,1 = 0,4? – StuartLC
vâng phân chia modulo a = b% c; sẽ không hoạt động, bởi vì bạn không thể nhận được phần còn lại bằng cách chia một số thập phân cho một số thập phân. –