Articles of ponto flutuante

Funções de comparação de ponto flutuante para c #

Alguém pode apontar (ou mostrar) algumas boas funções gerais de comparação de ponto flutuante em C # para comparar valores de ponto flutuante? Eu quero implementar funções para IsEqual , IsGreater um IsLess . Eu também só me importo com duplos não flutua.

Comportamento estranho ao converter um float para int em c #

Eu tenho o seguinte código simples: int speed1 = (int)(6.2f * 10); float tmp = 6.2f * 10; int speed2 = (int)tmp; speed1 e speed2 devem ter o mesmo valor, mas na verdade eu tenho: speed1 = 61 speed2 = 62 Eu sei que provavelmente deveria usar Math.Round em vez de lançar, mas gostaria de […]

Conversão de duplo para string sem notação científica

Como converter um duplo em uma representação de seqüência de ponto flutuante sem notação científica no .NET Framework? Amostras “pequenas” (números efetivos podem ser de qualquer tamanho, como 1.5E200 ou 1e-200 ): 3248971234698200000000000000000000000000000000 0.00000000000000000000000000000000000023897356978234562 Nenhum dos formatos numéricos padrão é assim, e um formato personalizado também não parece permitir ter um número aberto de dígitos […]

Dificuldade de comparação numérica em R

Estou tentando comparar dois números em R como parte de uma condição if-statement: (ab) >= 0.5 Neste caso particular, a = 0,58 eb = 0,08 … e ainda assim (ab) >= 0.5 é falso. Estou ciente dos perigos de usar == para comparações exatas de números, e isso parece relacionado: (a – b) == 0.5) […]

Raiz quadrada inversa rápida incomum de John Carmack (Quake III)

John Carmack tem uma function especial no código fonte do Quake III que calcula a raiz quadrada inversa de um float, 4x mais rápido que o normal (float)(1.0/sqrt(x)) , incluindo uma constante 0x5f3759df estranha. Veja o código abaixo. Alguém pode explicar linha por linha o que exatamente está acontecendo aqui e por que isso funciona […]

Como representar o número FLOAT na memory em C

Durante a leitura de um tutorial, descobri como representar o número de Float na memory. O tutorial tinha um exemplo com um número de ponto flutuante. float a=5.2 with below Diagram Alguém pode por favor dizer como este 5.2 é convertido em binário e como ele é representado na memory acima do diagrama acima?

Por que não posso usar o valor flutuante como um parâmetro de modelo?

Quando tento usar float como um parâmetro de modelo, o compilador chora para esse código, enquanto int funciona bem. É porque eu não posso usar float como um parâmetro de modelo? #include using namespace std; template class GenericClass { private: T value; public: GenericClass() { value = defaultValue; } T returnVal() { return value; } […]

Converter float para duplicar sem perder precisão

Eu tenho um flutuador primitivo e preciso de um duplo primitivo. Simplesmente lançar o float para o dobro me dá uma precisão extra estranha. Por exemplo: float temp = 14009.35F; System.out.println(Float.toString(temp)); // Prints 14009.35 System.out.println(Double.toString((double)temp)); // Prints 14009.349609375 No entanto, se, em vez de transmitir, eu gerar o float como uma string e analisar a […]

Como executar uma operação bit a bit em números de ponto flutuante

Eu tentei isso: float a = 1.4123; a = a & (1 << 3); Eu recebo um erro do compilador dizendo que o operando de & não pode ser do tipo float. Quando eu faço: float a = 1.4123; a = (int)a & (1 << 3); Eu recebo o programa em execução. A única coisa […]

Precisão ‘float’ vs. ‘double’

O código float x = 3.141592653589793238; double z = 3.141592653589793238; printf(“x=%f\n”, x); printf(“z=%f\n”, z); printf(“x=%20.18f\n”, x); printf(“z=%20.18f\n”, z); vai te dar a saída x=3.141593 z=3.141593 x=3.141592741012573242 z=3.141592653589793116 onde na terceira linha de saída 741012573242 é lixo e na quarta linha 116 é lixo. Os duplos têm sempre 16 algarismos significativos, enquanto os flutuadores têm sempre […]