У меня есть приложение, что я хочу смочь использовать большие количества и очень точные числа. Для этого мне была нужна интерпретация точности, и IntX только работает на целые числа.
Существует ли класс в платформе .NET или даже третьем лице (предпочтительно свободный), который сделал бы это?
Там другой путь состоит в том, чтобы сделать это?
В библиотеке F # также есть несколько действительно больших числовых типов, если вы не против их использовать ...
Десятичная система счисления - это 128-битный (16 байт) тип значений, который используется для высокоточных вычислений. Это тип с плавающей точкой, который внутренне представлен как основание 10, а не как основание 2 (т.е. двоичное). Если вам нужна высокая точность, вам следует использовать Decimal - но недостатком является то, что Decimal примерно в 20 раз медленнее, чем плавающие числа.
Вы можете использовать свободно распространяемый пакет произвольной точности BigDecimal из java.math
, который является частью распространяемого пакета J # от Microsoft и является управляемая библиотека .NET.
Поместите ссылку на vjslib в свой проект, и вы сможете что-то вроде этого:
using java.math;
public void main()
{
BigDecimal big = new BigDecimal("1234567890123456789011223344556677889900.0000009876543210000987654321");
big.add(new BigDecimal(1.0));
Debug.Print(big);
}
В консоли отладки будет выведено следующее:
1234567890123456789011223344556677889901.0000009876543210000987654321
Обратите внимание, что, как уже упоминалось, .NET 2010 содержит Класс BigInteger , который, по сути, уже был доступен в более ранних версиях, но только как внутренний класс (т.е. вам потребуется некоторое отражение, чтобы заставить его работать).
Если Decimal не работает для вас, попробуйте реализовать (или получить код откуда-нибудь) Rational
арифметику с использованием больших целых чисел. Это обеспечит необходимую вам точность.