Sto scrivendo il codice Python 2.6 che si interfaccia con NI TestStand 4.2 tramite COM in Windows. Voglio fare un valore "NAN" per una variabile, ma se lo passo float('nan')
, TestStand lo visualizza come IND
.Come distinguere i diversi tipi di float NaN in Python
Apparentemente TestStand distingue tra valori in virgola mobile "IND" e "NAN". Secondo TestStand help:
IND
corrisponde a Segnalazione NaN in Visual C++, mentreNAN
corrisponde a QuietNaN
Ciò implica che Python float('nan')
è effettivamente un Signaling NaN quando passato attraverso COM. Tuttavia, da quello che ho letto su Segnalazione NaN, sembra che Segnalazione NaN è un po ' "esotico" e Tranquillo NaN è la vostra nan "regolare". Quindi ho i miei dubbi sul fatto che Python passerebbe un Segnalazione NaN tramite COM. Come potrei scoprire se un Python float('nan')
viene fatta passare attraverso COM come Signaling NaN o Tranquillo NaN, o forse indeterminato?
C'è un modo per fare un Signaling NaN contro QuietNaN o indeterminato in Python, quando ci si interfaccia con altri linguaggi? (Utilizzando ctypes
forse?) Suppongo che questa sarebbe una soluzione specifica per la piattaforma, e accetterei che in questo caso.
Aggiornamento: Nell'editor sequenza di TestStand, ho provato a fare due variabili, un set per NAN
e l'altro insieme a IND
. Quindi l'ho salvato su un file. Quindi ho aperto il file e letto ogni variabile usando Python. In entrambi i casi, Python li legge come float nan
.
Perché proprio vuoi fare questo? Potresti finire per complicare le cose. Potresti usare un NoneType, forse ... – JoshD
Voglio impostare una variabile su 'NAN' (piuttosto che su' IND') in TestStand, tramite COM usando Python. Sarà più facile documentare per l'utente finale se possiamo usare costantemente 'NAN' nel nostro sistema. –