Question

Pour plusieurs raisons, je dois utiliser des flotteurs dans mon code au lieu de double. Pour utiliser un dans mon code, je dois écrire quelque chose comme:

float f = 0.75F;

ou le compilateur barf car il traite juste « 0,75 » comme un double. Est-ce que je peux mettre dans mon code ou un ensemble dans Visual Studio qui le fera traiter un littéral comme « 0,75 » comme un flotteur sans avoir à ajouter un « F » à chaque fois?

Était-ce utile?

La solution

flotteur est livré avec un F: -)

Autres conseils

Non - heureusement, l'OMI. Littéraux sont traités de la même manière partout.

Ceci est une bonne chose - imaginez un peu développeur d'entretien vient et regarde votre code dans un an. Il voit « 0.75 » et pense « Je sais que C # -? C'est un double accrocher, comment est-il affecté à une variable flottante » Ick.

Est-il vraiment si douloureux pour ajouter le « F » partout? Avez-vous vraiment que de constantes? Pourriez-vous les extraire des valeurs constantes, de sorte que tous vos littéraux « F-suffixées » sont au même endroit.

Pour votre information - vous pouvez trouver toutes les options du compilateur pour C # http : //msdn.microsoft.com/en-us/library/6ds95cz0.aspx . Si vous cochez là, vous verrez qu'il n'y a pas une option qui permet cela -. Et à juste titre, pour les raisons que Skeet @ Jon a noté

La langue interprête flottante littéraux de précision de point en double partout. Ce n'est pas une caractéristique configurable du compilateur -. Et avec raison

Configuration comment la langue interprète le code conduirait à des problèmes à la fois la compatibilité et la capacité des développeurs de maintenance de comprendre ce que les moyens de code.

Bien que pas recommandé en général, vous pouvez réduire la douleur un peu en C # 3 en utilisant:

var f = 0.75F;

Juste être prudent, car oublier le suffixe « F » avec cette syntaxe forcera le compilateur de créer un double, pas un flotteur.

Je vous conseille d'utiliser toujours

var meaning = 1f;

parce que le mot-clé « var » permet d'économiser beaucoup d'interprétation humaine et le temps d'entretien.

Le bon comportement ne serait pas un compilateur pour interpréter littéraux non suffixé comme flotteurs simple précision, mais plutôt de reconnaître que les conversions de deux à flotteur doit être considéré comme l'élargissement des conversions depuis, pour chaque valeur de double, il est soit précisément une représentation sans ambiguïté float correcte, ou (dans quelques cas rares de bord), il y aura exactement deux valeurs tout aussi bons, dont aucun ne sera plus une partie par quadrillion d'être sans ambiguïté la valeur correcte. Sémantiquement, les conversions de float à double devraient être considérés comme des conversions de rétrécissement (car ils exigent que le compilateur « deviner » des informations qu'il n'a pas), mais les difficultés pratiques qui causeraient pourraient justifier des conversions dans cette direction 'élargissement.

Peut-être que l'on devrait demander Microsoft d'ajouter une conversion d'élargissement de double à float? Il n'y a pas de bonne raison pour laquelle le code qui calcule les coordonnées graphiques comme double doit être encombré de typecasts lors de l'appel des fonctions de dessin.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top