ОК, мне нужно было знать, поэтому я тестировал пошагово и придумал следующие ограничения:
positive: 1,073,741,951
negative: -1,073,741,760
Код, который я использовал, выглядел примерно так:
int lastGoodVal = 0;
for (int i = -1073000000; i > -1073832999; i -= 1)
{
g.DrawLine(Pens.Blue, new Point(0,0), new Point(0, i));
lastGoodVal = i;
}
Цикл вышебыл последний тест, шагая на 1, через диапазон отрицательных значений, установленных предыдущими тестами.Как видите, lastGoodVal содержит последнюю успешную итерацию рисования и, следовательно, реальный предел, который я буду использовать в качестве константы.
Я пытался сопоставить эти числа со значением в примитивах .NET, но не смог,Каждый предел близок к значению 2 ^ 30, но не совсем на нем.Любое другое понимание будет высоко ценится.
Я также тестировал только методом DrawLine.Возможно, что существуют другие ограничения для других функций в API, но у меня еще не было возможности исследовать это.
Кроме того, после завершения этого эксперимента и затем поиска в Google для значения 1073741951, я наткнулся на thisстатья , которая соотносит мои выводы.Я также обнаружил это в каком-то архиве монокодов, в котором упоминается близкая, хотя и не точная корреляция с пределами с плавающей точкой.