Ищу более простой способ использовать поплавки в C#

StackOverflow https://stackoverflow.com/questions/1153826

Вопрос

По ряду причин я должен использовать поплавки в своем коде, а не в удвоении. Чтобы использовать буквальный в моем коде, я должен написать что -то вроде:

float f = 0.75F;

Или компилятор будет барфом, так как он рассматривает только «0,75» как двойник. Есть ли что -нибудь, что я могу поместить в свой код или установить в Visual Studio, что заставит его относиться к буквальному, как «0,75» как поплавок, не добавляя «F» каждый раз?

Это было полезно?

Решение

Поплавок поставляется с F :-)

Другие советы

Нет - к счастью, ИМО. Литералы обращаются одинаково везде.

Это хорошая вещь - представьте, что какой -то разработчик технического обслуживания приходит и просматривает ваш код через год. Он видит «0,75» и думает: «Я знаю, C# - это двойное! Прозрачный

Действительно ли так больно добавлять «F» везде? У тебя действительно есть что много констант? Не могли бы вы извлечь их в качестве Постоянные значения, поэтому все ваши «F-Suffixed» литералы находятся в одном месте.

К вашему сведению - вы можете найти все варианты компилятора для C# в http://msdn.microsoft.com/en-us/library/6ds95cz0.aspx. Анкет Если вы проверите там, вы увидите, что нет никакой опции, которая позволяет это - и по праву по тем причинам, которые отметил @jon Skeet.

Язык интерпретирует литералы с точностью с плавающей точкой, как двойные везде. Это не настраиваемая особенность компилятора - и по уважительной причине.

Настройка того, как интерпретирование языка, которое вы кодируете, приведет к проблемам как с совместимостью, так и с способностью разработчиков технического обслуживания понять, что означает этот код.

Хотя в целом не рекомендуется, вы можете немного уменьшить боль в C# 3, используя:

var f = 0.75F;

Просто будьте осторожны, потому что забывание суффикса «f» с этим синтаксисом заставит компилятор создать двойник, а не поплав.

Я бы посоветовал вам всегда использовать

var meaning = 1f;

Потому что ключевое слово «var» экономит много времени человеческой интерпретации и технического обслуживания.

Правильное поведение заключается не в том, чтобы компилятор мог интерпретировать не подмешанные литералы как плавания с одной рецепцией, а скорее признать, что преобразования из двойного в плавание следует рассматривать как расширяющиеся преобразования, поскольку для каждого double ценность, есть либо один однозначно корректный float Представление, или (в нескольких редких случаях) будет точно два одинаково хороших значения, ни одно из которых не будет более чем частью на квадриллион от однозначно корректного значения. Семантически, обращение из float к double Следует рассматривать как суженные преобразования (поскольку они требуют, чтобы компилятор «угадал» в информации, которой нет), но практические трудности, которые могли бы вызвать, могли бы оправдать преобразование в этом направлении «расширение».

Возможно, нужно обратиться к Microsoft, чтобы добавить расширение преобразования из double к float? Нет веской причины, почему код, который вычисляет графические координаты как double Должен быть загроможден типами при вызове функций чертежа.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top