переменная условия - почему вызов pthread_cond_signal () перед вызовом pthread_cond_wait () является логической ошибкой?

Число 61.0 действительно имеет точную операцию с плавающей запятой, но это не так для всех целых чисел. Если вы написали цикл, который добавил его как к числу с плавающей запятой с двойной точностью, так и к 64-битовому целому числу, в конечном итоге вы достигнете точки, где 64-битное целое отлично представляет число, но плавающая точка не делает- потому что не хватает значительных бит.

Намного проще достичь точки аппроксимации в правой части десятичной точки. Если вы начали записывать все числа в двоичной с плавающей запятой, это имело бы смысл.

Еще один способ задуматься о том, что, когда вы отмечаете, что 61.0 отлично представимо в базе 10 и смещает десятичная точка вокруг не меняет этого, вы выполняете умножение на степени десяти (10 ^ 1, 10 ^ -1). В плавающей точке умножение на две степени не влияет на точность числа. Попробуйте взять 61.0 и делить его на три раза для иллюстрации того, как точное число может потерять точное представление.

23
задан curiousguy 27 August 2015 в 07:26
поделиться