Использовать двойную функцию с плавающей запятой - PullRequest
1 голос
/ 14 марта 2019

Из текстового файла я читаю значение X.

XCOORD = -75.015

Я получаю его вот так и преобразую в двойное значение.

    var dic = File.ReadAllLines("test.txt")
      .Select(l => l.Split(new[] { '=' }))
      .ToDictionary(s => s[0].Trim(), s => s[1].Trim());

    string X = dic["XCOORD"];
    double GivenX = Convert.ToDouble(X);

Затем я использую свою функцию какИтак:

WriteFloat(pointerx, (float)GivenX);

К сожалению, функция не может правильно прочитать значение.Потому что это работает, если я просто делаю:

WriteFloat(pointerx, -75.015f);

Я думаю, что он не читает символы - и / или.Есть ли идеи о том, как это сделать?По запросу я распечатал значение X:

mRef.showInfo(Convert.ToString(GivenX));

Показывает: -75015, без.Я напечатал это после преобразования в удвоение.Если я положу это в текстовом файле, как это: XCOORD = -75.015f.Это приводит к сбою всей моей программы.

Функция WriteFloat:

public void WriteFloat(long Address, float Value)
        {
            WriteProcessMemory(GetProcessHandle(), Address, BitConverter.GetBytes(Value), 4);
        }

В настоящее время я выяснил это, прежде чем преобразовать его в double.Он печатает X отлично: -75.015.После преобразования в двойное число это: -75015.Это пропускает.после -75.

1 Ответ

1 голос
/ 14 марта 2019

Это не совсем ответ, но он отвечает на многие комментарии. И это не помещается в комментарии

Я создал простой текстовый файл, который выглядит следующим образом:

XCOORD = -75.015
POSITIVE = 25.123
WHOLE = 123

Затем я взял ваш код и расшифровал его, чтобы прочитать все ключи / значения в этом файле и записать результаты:

 public static void ConvertTheFloats()
 {
     var dic = File.ReadAllLines("ConvertFloatsData.txt")
         .Select(l => l.Split(new[] { '=' }))
         .ToDictionary(s => s[0].Trim(), s => s[1].Trim());

     var keys = dic.Keys;
     foreach (var key in keys)
     {
         string x = dic[key];
         if (float.TryParse(x, out var floatX))
         {
             Debug.WriteLine($"Success: Key: {key} - String Value: {x} - Float Value: {floatX}");
         }
         else
         {
             Debug.WriteLine($"Failed: Key: {key} - String Value: {x}");
         }
     }
 }

Результат выглядит так:

Success: Key: XCOORD - String Value: -75.015 - Float Value: -75.015
Success: Key: POSITIVE - String Value: 25.123 - Float Value: 25.123
Success: Key: WHOLE - String Value: 123 - Float Value: 123

Итак, ваш анализ файла работает. Словарь получает ключи и строку, представляющую число с плавающей точкой (я не беспокоился о двойных). Я могу успешно конвертировать их в поплавки. Значения совпадают.

Похоже, что ваши проблемы в коде, который вы не опубликовали.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...