На главную Наши проекты:
Журнал   ·   Discuz!ML   ·   Wiki   ·   DRKB   ·   Помощь проекту
ПРАВИЛА FAQ Помощь Участники Календарь Избранное RSS
msm.ru
  
> long double в С#
    Народ, вопрос в следующем мне например "нехватает" типа double(в C++ использовал long double). Как в С# работать с типами повышенной точности long double
      в .NET нет вещественных чисел размером 10 байт (таких как long double в C++ и Extended в Delphi).
        Жаль, а если точность нужна, что делать?
        Мне не понятно почему Microsoft не поддерживают long double, ни в VC++, ни в C#, ведь интелловский сопроцессор поддерживает 80 бит(плавучку)
        Сообщение отредактировано: Djoni -
          Использовать тип decimal
            Цитата Djoni,8.12.04, 16:35 @
            Мне не понятно почему Microsoft не поддерживают long double, ни в VC++, ни в C#, ведь интелловский сопроцессор поддерживает 80 бит(плавучку)


            Одна из основных идей .NET - идея межплатформенной переносимости кода. А long double поеддерживаетмся Intel'ом и больше никем. В то время как на тип double (вещественное целое с плавающей точкой размером 8 байт) сушествует международный стандарт (к сожалению, не могу привести ссылку).
              Andr .NET
              Если я не ошибаюсь, то long double соответствует IEEE, не ну ведь подавляющее число процов(я не беру микроконтроллеры и DSP) интел-совместимые, могли бы и сделать, что-то для точных вычислений, просто для меня это критично, поэтому не получится видимо прогу на шарпе написать
                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).
                  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 ).
                    Вчитаемся в сообщение выше:

                    Obligatory - непременный, обязательный (англ.)
                    Ubiquitous - вездесущий, повсеместный (англ.)
                    Optional - необязательный, дополнительный, факультативный (англ.)

                    Перевод выполнен с помощью Lingvo 8 с использованием словарей LingvoUniversal и LingvoComputer.

                    Таким образом, IEEE754 дает стандарт на типы Single, Double и Extended. Но Single и Double объявлены обязательными, а Extended - необязательным.
                    Поэтому в в целях межплатформенной совместмости .NET не поддерживает тип Extended.
                    Сообщение отредактировано: Andr .NET -
                    0 пользователей читают эту тему (0 гостей и 0 скрытых пользователей)
                    0 пользователей:


                    Рейтинг@Mail.ru
                    [ Script execution time: 0,0275 ]   [ 16 queries used ]   [ Generated: 17.11.25, 18:37 GMT ]