У меня есть два целых числа x и y . Мне нужно вычислить x/y и в качестве результата я хотел бы получить float. Например, в результате 3/2 я хотел бы иметь 1.5. Я думал, что самый простой (или единственный) способ сделать это – преобразовать x и y в тип float. К сожалению, я не могу […]
Я рассматривал реализацию сравнения (double, double) в стандартной библиотеке Java (6). В нем говорится: public static int compare(double d1, double d2) { if (d1 d2) return 1; // Neither val is NaN, thisVal is larger long thisBits = Double.doubleToLongBits(d1); long anotherBits = Double.doubleToLongBits(d2); return (thisBits == anotherBits ? 0 : // Values are equal (thisBits […]
При использовании двойного или плавающего типа данных в приложении iPhone у меня возникают проблемы с сравнениями «> =» и « = 4.2», является ложным вместо истинного. Как я могу избежать этой проблемы?
Я написал class, который проверяет равенство, меньше и больше, чем с двумя удвоениями в Java. В моем общем случае сравнивается цена, которая может иметь точность в полтора процента. 59,005 по сравнению с 59,395. Является ли эпсилон, который я выбрал адекватным для этих случаев? private final static double EPSILON = 0.00001; /** * Returns true if […]
Вот код: class testsum { public static void main(String arg[]) { double sum=0; double fraction; fraction=-1/9; System.out.println(“fraction: “+fraction); fraction=-1; fraction=fraction/9; System.out.println(“fraction: “+fraction); } } выходы равны 0 а затем -0.11111111 почему был первый выход 0 а не -0.11111111111 ?
Дополнение математически содержит ассоциативное свойство: (a + b) + c = a + (b + c) В общем случае это свойство не выполняется для чисел с плавающей запятой, потому что они представляют значения с конечной точностью. Можно ли компилятору разрешить эту замену при генерации машинного кода из программы C как часть оптимизации? Где это точно […]
Я видел некоторые из этих символов, но я не могу найти ничего странного в этом, double d = 5D; float f = 3.0F; Что означает D и F позади 5 точно означает?
Я работал над встроенным проектом, когда сталкивался с тем, что, по моему мнению, было странным поведением. Мне удалось воспроизвести его на кодовом коде (см. Ниже), чтобы подтвердить, но у меня нет других компиляторов C на моей машине, чтобы попробовать их на них. Сценарий: у меня есть #define для наиболее отрицательного значения, которое может содержать 32-разрядное […]
Я просто прочитал заявление о сравнении значений с плавающей запятой Значения с плавающей точкой не должны сравниваться с помощью операторов == или! =. Большинство значений с плавающей запятой не имеют точного двоичного представления и имеют ограниченную точность. Если да, то каков наилучший метод для сравнения двух значений с плавающей запятой?
SSE2 имеет инструкции по преобразованию векторов между одноточечными поплавками и 32-разрядными целыми числами. _mm_cvtps_epi32() _mm_cvtepi32_ps() Но нет эквивалентов для двухточечных и 64-битных целых чисел. Другими словами, они отсутствуют: _mm_cvtpd_epi64() _mm_cvtepi64_pd() Кажется, что у AVX их тоже нет. Каков наиболее эффективный способ имитации этих свойств?