Pregunta

Por varias razones, tengo que usar flotadores en mi código en lugar de dobles. Para usar un literal en mi código, tengo que escribir algo como:

float f = 0.75F;

O el compilador se barfará, ya que trata solo "0.75" como doble. ¿Hay algo que pueda poner en mi código o configurar en Visual Studio que lo haga tratar un literal como "0.75" como flotante sin tener que agregar una "F" cada vez?

¿Fue útil?

Solución

Float viene con una F :-)

Otros consejos

No, afortunadamente, en mi opinión. Los literales son tratados de la misma manera en todas partes.

Esto es bueno: imagine que el desarrollador de mantenimiento viene y mira su código en un año. Él ve "0.75" y piensa "Sé C#, ¡eso es un doble! Espera, ¿cómo se asigna a una variable flotante?" Ick.

¿Es realmente tan doloroso agregar la "F" en todas partes? Realmente tienes que muchas constantes? ¿Podrías extraerlos? como Valores constantes, por lo que todos sus literales "Sufijo" F están en el mismo lugar.

FYI: puede encontrar todas las opciones del compilador para C# en http://msdn.microsoft.com/en-us/library/6ds95cz0.aspx. Si verifica allí, verá que no hay ninguna opción que lo permita, y con razón por las razones que @Jon Skeet señaló.

El lenguaje interpreta los literales de precisión del punto flotante como dobles en todas partes. Esta no es una característica configurable del compilador, y con una buena razón.

Configuración de cómo el lenguaje interpreta su código conduciría a problemas con la compatibilidad y la capacidad de los desarrolladores de mantenimiento para comprender lo que significa el código.

Si bien no es recomendable en general, puede reducir un poco el dolor en C# 3 usando:

var f = 0.75F;

Solo tenga cuidado, porque olvidar el sufijo 'F' con esta sintaxis hará que el compilador cree un doble, no un flotador.

Te aconsejaría que siempre uses

var meaning = 1f;

Porque la palabra clave "var" ahorra mucha interpretación humana y tiempo de mantenimiento.

El comportamiento adecuado no sería que un compilador interprete literales no sufijados como flotadores de precisión única, sino que reconozca que las conversiones del doble al flotador deben considerarse conversiones, ya que, para cada double valor, hay precisamente uno inequívoco correcto float Representación, o (en algunos casos de borde raro) habrá precisamente dos valores igualmente buenos, ninguno de los cuales será más de una parte por cuadrillatura de ser el valor inequívoco correcto. Semánticamente, conversiones de float a double debe considerarse como conversiones estrechas (ya que requieren que el compilador "adivine" a la información que no tiene), pero las dificultades prácticas que causarían podrían justificar hacer conversiones en esa dirección 'ampliando'.

Quizás uno debería solicitar a Microsoft que agregue una conversión amplia de double a float? No hay una buena razón por la cual el código que calcula las coordenadas de gráficos como double Debe estar abarrotado de Typecasts al llamar a las funciones de dibujo.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top