Как различать различные типы NaN с плавающей запятой в Python

Я пишу код Python 2.6, который взаимодействует с NI TestStand 4.2 через COM в Windows. Я хочу сделать значение "NAN" для переменной, но если я передам его float ('nan') , TestStand отобразит его как IND .

Очевидно, TestStand различает значения с плавающей запятой "IND" и "NAN". Согласно справке TestStand :

  • IND соответствует Signaling NaN в Visual C ++, тогда как
  • NAN соответствует QuietNaN

Это означает, что float ('nan') Python фактически является сигнальным NaN при передаче через COM. Однако из того, что я читал о Сигнализация NaN , кажется, что Сигнализация NaN немного «экзотична», а Тихий NaN - ваш «обычный» NaN . Поэтому у меня есть сомнения, что Python будет передавать сигнальный NaN через COM. Как я могу узнать, передается ли Python float ('nan') через COM как сигнальный NaN или Quiet NaN , или, может быть, Неопределенный ?

Есть ли способ сделать Сигнальный NaN по сравнению с QuietNaN или Неопределенный в Python при взаимодействии с Другие языки? (Возможно, с использованием ctypes ?) Я предполагаю, что это будет решение для конкретной платформы, и в данном случае я согласен с этим.

Обновление: В редакторе последовательности TestStand я попытался сделать две переменные, одна из которых имеет значение NAN , а другая - IND . Затем я сохранил его в файл. Затем я открыл файл и прочитал каждую переменную с помощью Python. В обоих случаях Python читает их как nan float.

10
задан Craig McQueen 13 October 2010 в 01:00
поделиться