long double в С#
![]() |
Наши проекты:
Журнал · Discuz!ML · Wiki · DRKB · Помощь проекту |
|
| ПРАВИЛА | FAQ | Помощь | Поиск | Участники | Календарь | Избранное | RSS |
| [216.73.216.82] |
|
|
long double в С#
|
Сообщ.
#1
,
|
|
|
|
Народ, вопрос в следующем мне например "нехватает" типа double(в C++ использовал long double). Как в С# работать с типами повышенной точности long double
|
|
Сообщ.
#2
,
|
|
|
|
в .NET нет вещественных чисел размером 10 байт (таких как long double в C++ и Extended в Delphi).
|
|
Сообщ.
#3
,
|
|
|
|
Жаль, а если точность нужна, что делать?
Мне не понятно почему Microsoft не поддерживают long double, ни в VC++, ни в C#, ведь интелловский сопроцессор поддерживает 80 бит(плавучку) |
|
Сообщ.
#4
,
|
|
|
|
Использовать тип decimal
|
|
Сообщ.
#5
,
|
|
|
|
Цитата Djoni,8.12.04, 16:35 @ Мне не понятно почему Microsoft не поддерживают long double, ни в VC++, ни в C#, ведь интелловский сопроцессор поддерживает 80 бит(плавучку) Одна из основных идей .NET - идея межплатформенной переносимости кода. А long double поеддерживаетмся Intel'ом и больше никем. В то время как на тип double (вещественное целое с плавающей точкой размером 8 байт) сушествует международный стандарт (к сожалению, не могу привести ссылку). |
|
Сообщ.
#6
,
|
|
|
|
Andr .NET
Если я не ошибаюсь, то long double соответствует IEEE, не ну ведь подавляющее число процов(я не беру микроконтроллеры и DSP) интел-совместимые, могли бы и сделать, что-то для точных вычислений, просто для меня это критично, поэтому не получится видимо прогу на шарпе написать |
|
Сообщ.
#7
,
|
|
|
|
Djoni,
Цитата .NET Framework SDK 1.1 Documentation Double complies with the IEC 60559:1989 (IEEE 754) standard for binary floating-point arithmetic. Цитата Delphi 2005 Documentation Extended offers greater precision than other real types but is less portable. Be careful using Extended if you are creating data files to share across platforms. Похоже, что long double (Extended) все же не входит в стандатрты IEEE. Значит, не судьба тебе написать свою прогу под .NET (и C# тут ни при чем - в самой платформе нет типа long double; в Delphi 8/2005 for .NET тип Extended отображается в тип System.Double). |
|
Сообщ.
#8
,
|
|
|
|
IEEE754:
Цитата Representable Numbers: IEEE 754 specifies three types or Formats of floating-point numbers: Single ( Fortran's REAL*4, C's float ), ( Obligatory ), Double ( Fortran's REAL*8, C's double ), ( Ubiquitous ), and Double-Extended ( Fortran REAL*10+, C's long double ), ( Optional ). |
|
Сообщ.
#9
,
|
|
|
|
Вчитаемся в сообщение выше:
Obligatory - непременный, обязательный (англ.) Ubiquitous - вездесущий, повсеместный (англ.) Optional - необязательный, дополнительный, факультативный (англ.) Перевод выполнен с помощью Lingvo 8 с использованием словарей LingvoUniversal и LingvoComputer. Таким образом, IEEE754 дает стандарт на типы Single, Double и Extended. Но Single и Double объявлены обязательными, а Extended - необязательным. Поэтому в в целях межплатформенной совместмости .NET не поддерживает тип Extended. |