Articles of ponto flutuante

Por que Resharper reclama quando eu comparo um duplo a zero?

Se eu fizer double d = 0; if (d == 0) { … } Resharper reclama na comparação d == 0 sobre “Comparação do número de ponto flutuante com o operador de igualdade. Possível perda de precisão ao arredondar valores.” Por quê? Não pode ser difícil representar o zero exato como um duplo ou um […]

Convertendo dois bytes em um SFLOAT IEEE-11073 de 16 bits em c #

Eu preciso converter uma matriz de dois bytes para o formato SFloat de acordo com IEEE-11073. Como eu posso fazer isso? Eu respondo a minha pergunta aqui. public float ToSFloat(byte[] value) { if (value.Length != 2) throw new ArgumentException(); byte b0 = value[0]; byte b1 = value[1]; var mantissa = unsignedToSigned(ToInt(b0) + ((ToInt(b1) & 0x0F) […]

Alguém pode explicar essa estranheza de ponto flutuante para mim?

Eu estava tentando percorrer todos os valores possíveis de um float como este: float i = 0.0F; float epsilon = float.Epsilon; while (i != float.MaxValue) { i += epsilon; } mas depois de atingir o valor 2.3509887E-38F ele pára de aumentar. float init = 2.3509887E-38F; float f = (init + float.Epsilon); Console.WriteLine(f == init); Estou […]

Qual é a maneira mais confiável de verificar se uma variável de ponto flutuante é um inteiro?

Eu posso pensar em várias maneiras, por exemplo. Convert.ToInt32(floatingPoint) – floatingPoint == 0; Math.Truncate(floatingPoint) – floatingPoint == 0; floatingPoint % 1 == 0; Math.Floor(floatingPoint) == floatingPoint; //etc… Mas qual método é mais confiável?

Problemas System.Convert.ToSingle (), (1.5) vs (1,5)

Eu estou escrevendo programa em c # para converter entre os formatos de modelo. O formato do modelo tem números como texto, como “-0.136222”. Eu posso usar System.Convert.ToSingle () para converter isso em um número de ponto flutuante. Mas aqui na Alemanha usamos vírgulas como pontos decimais (-0,136222), e o System.Convert pega isso. Agora eu […]

Por que o Math.Tan (90) fornece um valor não indefinido?

Ao trabalhar com Math.Tan() , descobri que o resultado para 90 graus não é indefinido. Mas é, inturn 1.6331779e + 16 Aqui está a captura de canvas do aplicativo Aqui está o código // convert to degrees angle = (Convert.ToDouble(op1) * Math.PI / 180); // write the output FinalResult.Text = Math.Tan(Convert.ToDouble(angle)).ToString(); Por que esse comportamento […]

Como verificar se o número é divisível em c #?

Eu preciso saber como fazer este procedimento. calculation1: 1/4 = 0,25 calculation2: 1/8 = 0,125 calculation3: 47/183 = 0,25683060109289617486338797814207…… calculation4: 58/889 = 0,06524184476940382452193475815523…… calculation5: 1/5 = 0,2 Os resultados dos cálculos 1, 2 e 5 darão um resultado curto, sem períodos ou uma seqüência infinita de dígitos. Os resultados dos cálculos 3 e 4 são […]

Determine se a operação resultará em estouro?

Eu tenho algumas classs dentro do meu aplicativo que representam unidades físicas, por exemplo, temperatura. Essas classs têm a capacidade de ter algumas unidades associadas a elas e alteradas, como Celcius e Kelvin. Eles também possuem valores Max e Min definidos pelo usuário. Quando eu quero mudar de unidade, recebo um fator de conversão entre […]

Como verificar se um duplo pode caber em um flutuante sem conversão para infinito

Existe uma maneira padrão de verificar se um número de ponto flutuante de 64 bits pode ser convertido em um número de 32 bits sem ser convertido para +/- Infinity? Eu sei que pode ser verificado depois para +/- Inf. Convert.ToSingle() não fará isso.

Normalização Mantissa de C # duplo

EDIT: Tem que funcionar agora, ao normalizar o mantiss é importante primeiro definir o bit implícito, quando a decodificação do bit implícito, em seguida, não precisa ser adicionado. Deixei a resposta marcada como correta, pois as informações realmente ajudaram. Atualmente estou implementando uma codificação (Distinguished encoding rules) e tenho um pequeno problema ao codificar valores […]