Có vẻ như bc không hỗ trợ các hoạt động float, khi tôi làm điều echo 1/8 | bc
đó giúp tôi có được số không.
Tôi đã kiểm tra bc (1)
, nhưng nó thậm chí không đề cập đến float
, vì vậy tôi tự hỏi liệu nó có được hỗ trợ không?
Có vẻ như bc không hỗ trợ các hoạt động float, khi tôi làm điều echo 1/8 | bc
đó giúp tôi có được số không.
Tôi đã kiểm tra bc (1)
, nhưng nó thậm chí không đề cập đến float
, vì vậy tôi tự hỏi liệu nó có được hỗ trợ không?
Câu trả lời:
bc
không làm dấu phẩy động nhưng nó thực hiện các số thập phân chính xác cố định. Các -l
cờ Hauke nhắc tải một thư viện toán học cho ví dụ. chức năng trig nhưng nó cũng có nghĩa là
[...] Tỷ lệ mặc định là 20
scale
là một trong một số "biến đặc biệt" được đề cập trong trang man. Bạn có thể đặt nó:
scale=4
Bất cứ lúc nào bạn muốn (cho dù -l
đã được sử dụng hay không). Nó đề cập đến số lượng chữ số có nghĩa được sử dụng trong một số thập phân . Nói cách khác, các giải pháp tiếp theo sẽ được làm tròn đến số chữ số đó sau thang thập phân (== độ chính xác cố định).
Các tỷ lệ sans mặc định -l
là 0, có nghĩa là làm tròn thành số nguyên.
trang người đàn ông nói:
Nếu bc được gọi với tùy chọn -l, thư viện toán học sẽ được tải sẵn [...]
Tính dễ hiểu của điều đó có thể được cải thiện, thực sự ...
1) Số trong bc có thang đo. Tỷ lệ của một số không nên nhầm lẫn với yếu tố tỷ lệ. Cùng một "tỷ lệ" thế giới được sử dụng như một hàm để truy vấn tỷ lệ của một số hoặc làm tham số để đặt hệ số tỷ lệ.
echo "scale=scale(1.1);11/10" | bc will return 1.1
2) Hệ số tỷ lệ xác định có bao nhiêu chữ số được giữ ở bên phải dấu thập phân khi thực hiện các thao tác. Nếu s là hệ số tỷ lệ hiện tại, sa là thang đo của toán hạng thứ nhất a, sb là thang đo của toán hạng thứ hai b, kết quả được rút ngắn như sau:
scale of result
a+b max(sa,sb)
a-b max(sa,sb)
a*b min(sa+sb , max(s,sa,sb))
a/b s
a%b so that a = b*quotient + remainder; remainder has sign of a
a^b min(sa×|b|, max(s,sa)); b must be integer
sqrt(a) max(s,sa)
3) Tại bc gốc là một tiền xử lý của dc. Bây giờ, trên nhiều hệ thống, bc là một chương trình độc lập.
echo "scale=4; 1/8" | bc