2015-05-15 5 views
0

У меня проблема с большими числами в двойных переменных. Представьте себе, у меня есть 3 номера, как это:Распознавание с плавающей запятой в двойной переменной

  1. 124.556321466
  2. 120.00
  3. 1.79769313486232E+308

Я просто хочу, чтобы признать Пункт 2 или те числа, которые не имеют каких-либо ценное число после того, как с плавающей точкой , Другими словами, эти числа могут быть целыми числами, а длины чисел не совпадают.

Две дополнительные вещи:

  • Я не хочу, чтобы преобразовать их в строку, потому что это действительно отнимает много времени процессора.
  • Я не могу преобразовать их в целое число, потому что мне нужны все цифры.
+0

Просто преобразуйте double в целое число, чтобы «распознать» его. Затем вычтите целое число из двойника и проверьте, если абсолютный результат меньше значения epsilon. – honk

+0

Третье число также является целым числом, но вне диапазона наиболее ограниченных диапазонов целочисленных типов. Вы хотите рассматривать его как целое? –

+0

Также, на каком языке? Существуют разные методы, которые я буду использовать на разных языках. –

ответ

1

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

Однако вы можете быть удивлены некоторыми результатами. 4.503599627370496E15, а все более крупные конечные двойные числа являются целыми.

Смежные вопросы