Преобразование строки к числу
Цитата: Тимур от 26.11.2021, 17:25Цитата: Тимур от 25.11.2021, 18:37Здравствуйте! Я не до конца объяснил ситуацию(но уже сам реализовал корень). Во-первых я сразу понял, что мне нужно будет находить число под знаком радикала, использовать метод Math.Sqrt и дальше передавать это значение в Compute(). Проблема скорее уже немного поменялась. Реализовать то я почти смог и думаю смогу, но то ли из-за шрифта, то ли из-за непонятно чего, в результате в label1 заносится текст, который мне не соответствует. Объясню: на клавиатуре нет знака радикала, как и степени, но я нашёл их в интернете. Поменяв текст button, которые и отвечают за выполнение этих задач, при нажатии я увидел, что это √ превращается в @, а ^ становится чем то похожим на 2 палочки. Ну т.е. совсем не то, что я ожидал увидеть. Очень хочется узнать, проблема в шрифте?Если да, то какой лучше выбрать? Или в чём тогда? И как же добавить символы, как на скриншоте. Я не всё еще знаю, да вроде и не должен.
Хм, проблему нашёл. Дело было в ублюдском шрифте на label1. Пойду дальше реализовывать корень, ибо это не легкая задача для меня!
Цитата: Тимур от 25.11.2021, 18:37Здравствуйте! Я не до конца объяснил ситуацию(но уже сам реализовал корень). Во-первых я сразу понял, что мне нужно будет находить число под знаком радикала, использовать метод Math.Sqrt и дальше передавать это значение в Compute(). Проблема скорее уже немного поменялась. Реализовать то я почти смог и думаю смогу, но то ли из-за шрифта, то ли из-за непонятно чего, в результате в label1 заносится текст, который мне не соответствует. Объясню: на клавиатуре нет знака радикала, как и степени, но я нашёл их в интернете. Поменяв текст button, которые и отвечают за выполнение этих задач, при нажатии я увидел, что это √ превращается в @, а ^ становится чем то похожим на 2 палочки. Ну т.е. совсем не то, что я ожидал увидеть. Очень хочется узнать, проблема в шрифте?Если да, то какой лучше выбрать? Или в чём тогда? И как же добавить символы, как на скриншоте. Я не всё еще знаю, да вроде и не должен.
Хм, проблему нашёл. Дело было в ублюдском шрифте на label1. Пойду дальше реализовывать корень, ибо это не легкая задача для меня!
Цитата: Тимур от 17.12.2021, 18:29Цитата: Вася от 24.11.2021, 17:29Здравствуйте. Прежде чем загонять уравнение в метод Compute(), можно решить часть уравнения с возведением в степень или взятием кореня. Например есть 2 + 5^3 * 7 и из этого делаем 2 + 125 * 7 и загоняем в Compute(). Тут уже надо парсить. Квадратный корень можно заменить на x^0.5. Символы ^ и √ добавляются так же как и другие.
Добрый вечер! Снова я со своими вопросами. Абы- как при помощи магии, вроде, реализовал корень. Конечно там есть огромные НО, на которые пока можете не смотреть. О чём же я вас желаю спросить? А вот о чём. Проблема опять похоже в знаке запятой и точки в числах с плавающим знаком. Сделал всё также, но не получается так, как в обычных вычислениях. Думаю без всего проекта вам не разобрать поэтому Ссылка.
Не вижу другой проблемы, почему тогда текст не воспринимается компилятором. Написал пару комментариев для себя лично и возможно и вам помогут они. Спасибо огромное заранее!
Цитата: Вася от 24.11.2021, 17:29Здравствуйте. Прежде чем загонять уравнение в метод Compute(), можно решить часть уравнения с возведением в степень или взятием кореня. Например есть 2 + 5^3 * 7 и из этого делаем 2 + 125 * 7 и загоняем в Compute(). Тут уже надо парсить. Квадратный корень можно заменить на x^0.5. Символы ^ и √ добавляются так же как и другие.
Добрый вечер! Снова я со своими вопросами. Абы- как при помощи магии, вроде, реализовал корень. Конечно там есть огромные НО, на которые пока можете не смотреть. О чём же я вас желаю спросить? А вот о чём. Проблема опять похоже в знаке запятой и точки в числах с плавающим знаком. Сделал всё также, но не получается так, как в обычных вычислениях. Думаю без всего проекта вам не разобрать поэтому Ссылка.
Не вижу другой проблемы, почему тогда текст не воспринимается компилятором. Написал пару комментариев для себя лично и возможно и вам помогут они. Спасибо огромное заранее!
Цитата: Вася от 18.12.2021, 12:05Добрый! Указывать региональные настройки надо везде, где есть конвертации строки в число и наоборот. У Вас на 216 строке их не указано, поэтому и возникала ошибка (например √0.25).
label1.Text = Math.Sqrt(Convert.ToDouble(label1.Text.Substring(1), numberFormatInfo)).ToString(numberFormatInfo);Теперь насчёт ошибки на 209 строке. На вход в метод Compute() приходит запятая вместо точки в дробном числе, потому что в 187 строке не указаны региональные настройки в методе ToString().
ss += res.ToString(numberFormatInfo) + lines[a];208 строка в этом случае не имеет смысла, так как строка конвертируется в строку и указание региональных настроек не заменяет запятую на точку.
Добрый! Указывать региональные настройки надо везде, где есть конвертации строки в число и наоборот. У Вас на 216 строке их не указано, поэтому и возникала ошибка (например √0.25).
label1.Text = Math.Sqrt(Convert.ToDouble(label1.Text.Substring(1), numberFormatInfo)).ToString(numberFormatInfo);
Теперь насчёт ошибки на 209 строке. На вход в метод Compute() приходит запятая вместо точки в дробном числе, потому что в 187 строке не указаны региональные настройки в методе ToString().
ss += res.ToString(numberFormatInfo) + lines[a];
208 строка в этом случае не имеет смысла, так как строка конвертируется в строку и указание региональных настроек не заменяет запятую на точку.
Цитата: Тимур от 18.12.2021, 13:52Цитата: Вася от 18.12.2021, 12:05Добрый! Указывать региональные настройки надо везде, где есть конвертации строки в число и наоборот. У Вас на 216 строке их не указано, поэтому и возникала ошибка (например √0.25).
label1.Text = Math.Sqrt(Convert.ToDouble(label1.Text.Substring(1), numberFormatInfo)).ToString(numberFormatInfo);label1.Text = Math.Sqrt(Convert.ToDouble(label1.Text.Substring(1), numberFormatInfo)).ToString(numberFormatInfo);label1.Text = Math.Sqrt(Convert.ToDouble(label1.Text.Substring(1), numberFormatInfo)).ToString(numberFormatInfo);Теперь насчёт ошибки на 209 строке. На вход в метод Compute() приходит запятая вместо точки в дробном числе, потому что в 187 строке не указаны региональные настройки в методе ToString().
ss += res.ToString(numberFormatInfo) + lines[a];ss += res.ToString(numberFormatInfo) + lines[a];ss += res.ToString(numberFormatInfo) + lines[a];208 строка в этом случае не имеет смысла, так как строка конвертируется в строку и указание региональных настроек не заменяет запятую на точку.
Ух ты. Да, я так и думал, что везде надо ставить региональные настройки, но внимательности не хватило, чтобы заметить, где они нужны. Спасибо большое. С вашим последним ответом наконец реализовал корень, осталось лишь возведение в степень. И придётся менять конструкцию знака равно, ибо писал только для отдельного случая, т.е когда есть знак корня. С добавление всего нового, придется постоянно добавлять еще как минимум одно IF. Думаю, у меня ещё будет, что у вас надо будет спросить. Извиняюсь , что возможно трачу Ваше время на вещи, которые занимать могут 10 секунд у меня, а для Вас намного больше.
Цитата: Вася от 18.12.2021, 12:05Добрый! Указывать региональные настройки надо везде, где есть конвертации строки в число и наоборот. У Вас на 216 строке их не указано, поэтому и возникала ошибка (например √0.25).
label1.Text = Math.Sqrt(Convert.ToDouble(label1.Text.Substring(1), numberFormatInfo)).ToString(numberFormatInfo);label1.Text = Math.Sqrt(Convert.ToDouble(label1.Text.Substring(1), numberFormatInfo)).ToString(numberFormatInfo);label1.Text = Math.Sqrt(Convert.ToDouble(label1.Text.Substring(1), numberFormatInfo)).ToString(numberFormatInfo);Теперь насчёт ошибки на 209 строке. На вход в метод Compute() приходит запятая вместо точки в дробном числе, потому что в 187 строке не указаны региональные настройки в методе ToString().
ss += res.ToString(numberFormatInfo) + lines[a];ss += res.ToString(numberFormatInfo) + lines[a];ss += res.ToString(numberFormatInfo) + lines[a];208 строка в этом случае не имеет смысла, так как строка конвертируется в строку и указание региональных настроек не заменяет запятую на точку.
Ух ты. Да, я так и думал, что везде надо ставить региональные настройки, но внимательности не хватило, чтобы заметить, где они нужны. Спасибо большое. С вашим последним ответом наконец реализовал корень, осталось лишь возведение в степень. И придётся менять конструкцию знака равно, ибо писал только для отдельного случая, т.е когда есть знак корня. С добавление всего нового, придется постоянно добавлять еще как минимум одно IF. Думаю, у меня ещё будет, что у вас надо будет спросить. Извиняюсь , что возможно трачу Ваше время на вещи, которые занимать могут 10 секунд у меня, а для Вас намного больше.