nổi Tôi có đoạn này với một kết quả lạ (279,1 ... so với 279,6 ...):Perl hành vi lạ trên giải nén các giá trị
$ perl -e "print unpack('f>', pack ('f>', 279.117156982422));"
279.617156982422
Trong khi người ta làm việc này
$ perl -e "print unpack('f>', pack ('f>', 279.117256982422));"
279.117248535156
Và những người đó cũng như
$ perl -e "print unpack('f<', pack ('f<', 279.117156982422));"
279.11715698242
$ perl -e "print unpack('f', pack ('f', 279.117156982422));"
279.117156982422
Có vấn đề gì? Đó có phải là một lỗi trong việc giải nén các giá trị điểm dấu chấm động không phải là bản địa không?
Lưu ý Perl là phiên bản 5.14.2 dưới Cygwin trên PC.
Hai trường hợp đầu tiên có chạy với các phiên bản khác nhau của perl hoặc các hệ điều hành khác nhau không? –
Kết quả của 'gói' trong trường hợp đầu tiên (ý tôi là, bytecode là gì)? – raina77ow
Sao chép ở đây với 5.14.2 (trên Cygwin trên Win7x64). Hiếu kỳ. Bạn có thể đã tìm thấy một lỗi. Lưu ý rằng 'in giải nén ('H8', gói ('f>', 279.117156982422))' để nhận được các bit trả về '438b8eff', là mẫu bit chính xác theo [trang này] (http: // babbage. cs.qc.cuny.edu/IEEE-754.old/Decimal.html) –