Я использую актив из Unity Asset Store под названием World Map Strategy Kit для работы над настольной игрой.В комплекте используется список Vector2 со значениями в диапазоне от -0,5 до +0,5 для определения границ провинций / стран на моей карте.
Я работаю над чтением путей SVG и преобразованием их в списки точек, которыеВходные данные WMSK.
По сути, не давая вам весь метод анализа 40 строк, у меня есть настройка, подобная приведенной ниже:
string raw = "1213.6788";
float x = float.Parse(raw);
float y = float.Parse(raw);
Vector2 a = new Vector2 (x, y);
Debug.Log(a);
Он последовательно округляет результат до 1213,7.
Сначала я подумал, что это может быть просто причудой с помощью метода Parse с плавающей точкой, поэтому я написал адаптированную версию, показанную ниже:
string raw = "1213.6788";
float x = (float)double.Parse(raw);
float y = (float)double.Parse(raw);
Vector2 a = new Vector2 (x, y);
Debug.Log(a);
То же самое.Он округляется до ближайшей десятой.
Я заметил нечто похожее ниже:
string rawX = "1213.6788";
string rawY = "891.7";
float x = (float)double.Parse(raw);
float y = (float)double.Parse(raw);
Vector2 a = new Vector2 (x, y);
int tw = 2500;
int th = 1250;
Vector2 translated = new Vector2 ();
translated.x = (a.x - tw * 0.5f + 0.5f) / tw;
translated.x = (a.y - th * 0.5f + 0.5f) / th;
Debug.Log(a);
Теперь вывод: (0,0, 0,2)
Что опятьокругляя его до десятых.Я могу принять приличную степень неточности, но это просто недопустимо - я пытаюсь перевести координаты из системы координат 2500 × 1250 в систему координат 1 × 1 в диапазоне от -0,5 до +0,5.Я ожидаю, что большинству координат потребуется 3-5 знаков после запятой для правильного хранения.
Ни на одном языке программирования, с которым я работал, даже на Java, числа с плавающей запятой периодически и последовательно округляются до десятых.,Это просто не то, что они обычно делают в моем опыте.
Итак, вопрос в том, что я делаю не так?Я имею в виду, что, конечно, можно анализировать информацию в плавающем потоке БЕЗ потери почти всех моих десятичных разрядов информации?
Может ли это быть каким-то образом мой компьютер (у меня относительно слабый и архаичный ноутбук, 1 ГГц IntelПроцессор с 2 ГБ оперативной памяти от 2010 года - да, я знаю, что мне нужно обновление)?
Или это для Unity?Может ли это быть структура данных Vector2, вызывающая потери?