Piszę kod Python 2.6, który łączy się z NI TestStand 4.2 przez COM w Windows. Chcę utworzyć wartość "NAN" dla zmiennej, ale jeśli przekażę ją float('nan')
, TestStand wyświetli ją jako IND
.Jak rozróżnić różne typy pływaka NaN w Pythonie
Najwyraźniej w testowej stacji rozróżnia się wartości zmiennoprzecinkowe "IND" i "NAN". Według TestStand help:
IND
odpowiada sygnalizacji NaN w Visual C++, aNAN
odpowiada QuietNaN
sugerujący, że Pythona float('nan')
jest faktycznie Sygnalizacja NaN kiedy przeszedł przez COM. Jednak z tego, co przeczytałem na temat Signaling NaN, wydaje się, że Signaling NaN jest nieco "egzotyczny" i Quiet NaN jest twoim "zwykłym" NaN. Mam więc wątpliwości co do tego, że Python będzie przekazywać Signaling NaN do COM. Jak mogę się dowiedzieć, czy Python float('nan')
jest przepuszczany przez COM jako sygnalizacji NaN lub Quiet NaN, czy może nieokreślony?
Czy istnieje jakiś sposób, aby Signaling NaN kontra QuietNaN lub nieokreślona w Pythonie, gdy relacje z innymi językami? (Może przy użyciu ctypes
?) Zakładam, że byłoby to rozwiązanie specyficzne dla platformy i zaakceptowałbym to w tym przypadku.
Aktualizacja: W edytorze sekwencji TestStand, próbowałem co dwie zmienne, jeden zestaw do NAN
a drugi zestaw do IND
. Potem zapisałem go do pliku. Następnie otworzyłem plik i odczytałem każdą zmienną za pomocą Pythona. W obu przypadkach Python odczytuje je jako zmienną o wartości nan
.
Dlaczego dokładnie chcesz to zrobić? Być może komplikujesz rzeczy. Można użyć NoneType być może ... – JoshD
Chcę ustawić zmienną na 'NAN' (zamiast" IND ") w TestStand, poprzez COM przy użyciu Python. Łatwiej będzie udokumentować użytkownikowi końcowemu, czy możemy konsekwentnie używać 'NAN' w naszym systemie. –