Проблема преобразования данных в C#
У меня есть одно текстовое поле в форме windows c#.
Я принимаю участие.
затем я хочу преобразовать это в двойное. Вот проблема надвигается.
double.TryParse(txtdisc.Text, out b);
я отладил и увидел, что там происходит актутально. В этом текстовом поле есть значение, но в этом "b"нет никакого значения.Я объявил "b" как double b=0.00.
так что в "Б"идет только 0. Что делать.
Что я уже пробовал:
Я пробовал и другими способами, например, обращать.Чтобы удвоить и удвоить.Разбор, но бесполезно. Я получаю это только здесь. другая форма та же самая, что работала с другими значениями. Почему вот так.
что же теперь делать?
[no name]
"В этом текстовом поле value" вы видели, какое там значение? Действительно ли это струна-двойник? Вы проверяете возвращаемое значение TryParse?
vijay_bale
Я проверил. Здесь TryParse возвращает значение 0.но в текстовом поле Значение есть 156.
[no name]
Значит, вы чего-то не договариваете. TryParse не возвращает 0.
vijay_bale
@NotPloitically,
двойной.Метод tryparse(txtdisc.Текст, из б);
вот и все. Нечего скрывать от вас, людей, которые пытаются мне помочь.
[no name]
"Здесь TryParse возвращает значение 0", TryParse не возвращает 0. Значит, есть что-то, о чем Вы нам не говорите.
Dave Kreskowiak
TryParse возвращает значение true/false, а не число. Вы не проверяете это возвращаемое значение. Если это значение false, то существует проблема со строкой, которую вы передали, что приводит к сбою операции синтаксического анализа для типа значения, которое вы ищете.
vijay_bale
Я видел эту ценность. Ложь приближается.
Dave Kreskowiak
Это означает, что есть проблема с входной строкой. Поскольку мы этого не видим, а вы не сказали нам точно, что это за струна, мы не можем сказать вам, что с ней не так.
vijay_bale
@ Дейв
просто я расчетливый какой элемент управления DataGrid клеток валу и хранить в переменной типа double.
это значение я преобразую в строку и отображаю в этом текстовом поле.Только это текстовое поле я конвертирую в double и хочу сделать с ним некоторые вычисления и вывод dsiplay.
Dave Kreskowiak
И это абсолютно ничего не говорит нам о строке, которую вы пытаетесь преобразовать в двойник.
vijay_bale
@ dave, я преобразую двойное значение в строку и отображаю его в текстовом поле. только это значение текстового поля я пытаюсь преобразовать в двойное.
это вам ничего не говорит, Тогда то, что вы хотите знать, просто скажите мне.
Dave Kreskowiak
О, я не знаю. Как насчет фактического значения txtdisc. Text!
Когда отладчик останавливается и показывает вам строку, в которой выбрасывается исключение, вы наводите курсор мыши .Текстовая часть, и она покажет вам значение.
Вы действительно не знаете, как использовать отладчик?
vijay_bale
значение txtdisc равно 156.
Dave Kreskowiak
Ну, это не так, потому что "156" прекрасно разбирается как дубль. Там есть еще кое-что, о чем ты нам не рассказываешь.
Dave Kreskowiak
Поставьте точку останова в строке TryParse и запустите код. Когда отладчик остановится, наведите курсор мыши на него .Текстовую часть строки и изучите значение. Это не "156". Это совсем не то, что вы думаете.
Отладчик существует для того, чтобы отлаживать вас, а не код. Он существует для того, чтобы улучшить ваше понимание кода.
vijay_bale
http://tinypic.com/r/2rdu3ow/9
http://tinypic.com/r/2r3ci2p/9
сюда же я помещаю и изображения отладки. просто взгляните
Dave Kreskowiak
Черт побери, ты делаешь все гораздо сложнее, чем это должно быть.
Перед 604.72 есть глупые символы, которые вы пытаетесь преобразовать. Именно из-за этих символов вы не можете преобразовать 604.72 в double.
vijay_bale
Я удалил этот символ валюты. Теперь она преобразована.большое вам спасибо за вашу помощь и за то, что вы рассказали мне о проблеме.
vijay_bale
Это код, в котором я вычисляю значение суммы ячеек datagridview и, наконец, преобразую и сохраняю его в текстовое поле.
public void totalsum()
{
int i = 0;
двойной j = 0.00;
for (i = 0; i <dataGridView1. Rows.Граф; ++i)
{
j += преобразовать.Метод todouble(dataGridView1.Строки[я].Ячейки[5]. Значение);
Математика.Раунд (j, 2, MidpointRounding.ToEven);
// return (int)Math.Этаж (j + .49);
// MessageBox.Показать(Дж.Метод toString());
}
txtitmtotal.Text = j. ToString("c");
[no name]
в этом фрагменте кода нет кода, которым вы поделились в описании проблемы. Где этот код появляется на картинке. Используйте опцию улучшить вопрос, чтобы добавить свой правильный код, вызывающий проблему
vijay_bale
конвертация будет однострочной, одна на.
двойной.Метод tryparse(txtitemtotal.Текст, из б);
Я cahnged что txtdisc.текст с txtitemtotal.текст
думая, что, возможно, проблема с этим текстовым полем. поэтому я переоделся.