myInt = int(5 * myRandom())
myRandom() là một phao được tạo ngẫu nhiên, mà nên được 0.2.Truyền tới lỗi int và dấu chấm động?
Vì vậy, tuyên bố này nên đánh giá là 1.
Câu hỏi của tôi: có thể là do lỗi dấu phẩy động, nó KHÔNG được đánh giá là 1?
Ví dụ: nếu do lỗi dấu phẩy động, thứ gì đó phải là 0.2 có thể là LESS hơn số đó? IE, ví dụ xem xét 3 khả năng sau:
int(5 * 0.2) = 1 //case 1 normal
int(5 * 0.2000000000000001) = 1 //case 2 slightly larger, its OK
int(5 * 0.1999999999999999) = 0 //case 3 negative, is NOT OK, as int() floors it
là case3 thậm chí có thể ?, với 0,1999999999999999 thể là kết quả của một lỗi điểm nổi? Tôi chưa bao giờ thực sự nhìn thấy một epsilon tiêu cực cho đến nay, chỉ có trường hợp 2, khi nó hơi lớn hơn một chút, và thats OK, như khi nó được đúc để int(), mà 'sàn' nó vào kết quả chính xác. Tuy nhiên với một epsilon âm, hiệu ứng 'sàn' sẽ làm cho kết quả là 0,9999999999999996 được đánh giá là 0.
Tôi không nghĩ là có thể, không. Phép nhân và làm tròn chỉ nên chú ý đến số chữ số có thể có tối đa. – Ryan
Nếu nó được tạo ngẫu nhiên, tại sao "nên" là 0,2? –
Đây là C++, không C. Bạn không thể sử dụng cú pháp hàm dựng trong C. –