Единственный способ сделать это - сериализовать значения Double
как пользовательский тип, который предоставляет информацию поверх значения.Например,
{
'isInfinity': 'true',
'isNan': 'false'
'value': '0' };
Это можно сделать довольно легко, используя тип оболочки для обработки Double
значений
[DataContract]
public sealed class DoubleWrapper {
[DataMember]
public bool isInfinity;
[DataMember]
public bool isNaN;
[DataMember]
public double value;
public DoubleWrapper(double p) {
isInfinity = Double.IsInfinity(p);
isNaN = Double.IsNaN(p);
value = p;
}
}