Постоянная Math.Pi
, согласно рефлектору и MSDN, равна 3.14159265358979323846. При просмотре класса Math в Visual Studio 2010 значение отображается как 3.14159. Кого я могу обвинить в укорочении драгоценных констант?Являются ли двойные константы усеченными для отображения в VS?
ответ
Извините, что повторилось, но как вы получите этот номер? Если я навису над константой или распечатаю ее в окне Immediate или Watch в VS2010, я получаю 3.1415926535897931, что также является значением, которое я получаю при просмотре mscorlib в Reflector.
Хотя это меньше точности, чем утверждения MSDN, оно все же намного лучше, чем номер, о котором вы говорите. VS должен выбрать форматирование для печати чисел с плавающей запятой. С результатами, которые я вижу, я считаю приемлемым по умолчанию.
Возможно, у вас есть плагин для VS 2010, который меняет вывод номера. Или, может быть, вы показываете номер в контекст дисплея, который должен усекать число, чтобы оно соответствовало. Где именно в Visual Studio вы просматриваете этот номер?
Я не знаю, почему ОП не отправляю это, как было бы убрать вещи так невероятно много, но вы можете воспроизвести следующим образом:
- Откройте IDE
- Enter Math. PI в файл .cs.
- правой кнопкой мыши на Math.PI и нажмите на кнопку «Перейти к определению»
Это открывает файл метаданных для Math, который содержит следующее:
//
// Summary:
// Represents the ratio of the circumference of a circle to its diameter, specified
// by the constant, π.
public const double PI = 3.14159;
По-видимому, Resharper обеспечивает лучший просмотр метаданных, чем VS, потому что он дает то же значение, что и Reflector. Однако, если я отключу Resharper, я получаю результат, который вы описываете. Странный. –
Yup, должно быть. Этот текст автоматически генерируется из метаданных. И, разумеется, не нужно преобразовывать общедоступные константы типа double в строку со всеми 15 значащими цифрами. Это поведение форматирования по умолчанию функции printf() в C/C++ с помощью спецификатора типа формата% f. Весьма вероятно, что этот код был написан на C++, поскольку интерфейс перечисления метаданных основан на COM. –
Спасибо, Ханс, Это очень интересно! – mpeterson
Вы можете обвинить VS метаданных, что вы получаете, когда нажимаете F12 на то, к чему у вас нет источника.
По крайней мере, я полагаю, это то, что вы делаете, потому что это единственное место, где я могу найти укороченную константу, о которой вы говорите.
Почему он это делает/откуда он получает это значение? Кто знает ...
- 1. Являются ли интернированные константы подходящими для GC?
- 2. Являются ли строковые константы переоценены?
- 3. Являются ли изменяемые константы безопасными?
- 4. Являются ли ссылочные члены хорошей практикой? Являются ли константы?
- 5. Двойные скобки [[]] vs Двойные скобки {{}} в Polymer
- 6. C/C++: двойные константы в классе неточны
- 7. Gunicorn и фляжка, статические файлы являются неполными/усеченными
- 8. Являются ли константы оптимизированными clang в Objective-C?
- 9. Являются ли файлы .resx в VS 2015?
- 10. AngularJS: Константы vs Значения
- 11. Являются ли константы в файлах модулей, которые предполагается импортировать автоматически?
- 12. Java enums vs константы для строк
- 13. Являются ли перечисления менее ремонтопригодными, чем общедоступные статические конечные константы?
- 14. Compile-time vs runtime константы
- 15. Переменные класса VS константы в моделях Rails
- 16. Являются ли локальные константы константы предварительно вычисляемыми в Swift, если они явно могут быть оптимизированы?
- 17. Объекты NSData с усеченными ядрами
- 18. Являются ли кратные 0,25 точно представляемыми как двойные?
- 19. Являются ли двойные "" и одиночные '' котировки (всегда) взаимозаменяемыми?
- 20. Регулируемая таблица с усеченными данными для HTML
- 21. Laravel 5: constants.php vs константы в контроллере vs константы в модели
- 22. Регистрация запроса с усеченными результате
- 23. Как вы получаете двойные символы подчеркивания для отображения в уценке?
- 24. Являются ли значения цветов POI для IndexedColors?
- 25. константы отображения для пользовательского объекта, похожие на MessageBoxButtons
- 26. Работа с усеченными изображениями с PIL
- 27. Являются ли Java-литералы постоянными?
- 28. pprint(): как использовать двойные кавычки для отображения строк?
- 29. onmouseover vs onmousemove для отображения информации
- 30. Блок отображения Vs. Непрозрачность
Связанный http://stackoverflow.com/q/3742692/38206 –