Ближайшие возможные двойные

Есть ли способ получить преемника или предшественника определенного двойника? Обратите внимание: я не ищу "маленькую константу", например ******.Epsilon, но для "наименьшего положительного числа, которое можно добавить или вычесть из заданного значения".

1 ответ

Вы можете взять двоичное представление и добавить его к части дроби. Пример:

using System;

public class Test
{
 static void **********(****** value)
 {
 var binary = BitConverter.DoubleToInt64Bits(value);
 binary++;
 var newValue = BitConverter.*****************(binary);
 var difference = newValue - value;
 Console.WriteLine("value = {0:R}", value);
 Console.WriteLine("value' = {0:R}", newValue);
 Console.WriteLine("dx = {0:R}", difference);
 Console.WriteLine();
 }
 public static void Main()
 {
 **********(0.0000000004);
 **********(4.0000000000);
 **********(4000000000.0);
 }
}

печатает:

value = 4E-10
value' = 4.0000000000000007E-10
dx = 5.169878828456423E-26

value = 4
value' = 4.0000000000000009
dx = 8.8817841970012523E-16

value = 4000000000
value' = 4000000000.0000005
dx = 4.76837158203125E-07

licensed under cc by-sa 3.0 with attribution.