Nicomendox Ответов: 4

Как я могу установить число с разделителем tousand и с неограниченным десятичным числом ?


Привет. Я просто хочу поставить этот номер в таком формате:

Номер такой : 123456789.98765432123456789

Хотите такой формат. 123,456,789.98765432123456789

TextBox1.Text = (Format((CDec(TextBox1.Text)), "#,#.####"))


Я использую этот код для тысячного разделителя, но количество десятичных цифр всегда меняется.

(Десятичные числа будут сохранены как исходные. Десятичные числа не будут округляться. Есть 17 цифр в десятичной системе счисления. Но иногда 5, иногда 8, иногда 3. Как я могу расположить тысячи отдельно и сохранить все десятичные цифры (сохранить исходное количество цифр).

например:

если мы зададим 5 цифр для десятичного числа и если десятичное число .23, то результат будет .23000
этого я не хочу

Я хочу десятичное если .23 .23 потом вернуть, если десятичное ,а затем вернуться 234 ,234 не .23400

продвинутая благодарность.

Что я уже пробовал:

TextBox1.Text = (Format((CDec(TextBox1.Text)), "#,#.####"))

4 Ответов

Рейтинг:
2

Wendelius

Возможно, что-то вроде

Dim formatting As String = "###,###,##0.0####"

Debug.WriteLine(0.23.ToString(formatting))
Debug.WriteLine(0.234.ToString(formatting))
Debug.WriteLine(1234.23.ToString(formatting))
Debug.WriteLine(123456789.234.ToString(formatting))

Результат был бы таков
0.23
0.234
1,234.23
123,456,789.234


Рейтинг:
1

Richard MacCutchan

Видеть Строки Стандартного Числового Формата | Microsoft Docs[^], для использования со спецификатором формата 'N' и связанными с ним опциями.


Wendelius

Это то, что я тоже думал сначала, но N использует стандартное количество десятичных знаков, обычно 2...

Richard MacCutchan

Вы можете изменить его с помощью значения точности или параметров.

Wendelius

Но разве вам не нужно каким-то образом узнать количество желаемых десятичных знаков? Например


Тусклое форматирование в виде строки = "N3"

Отлаживать.WriteLine(0.23.ToString(форматирование))
Отлаживать.WriteLine(0.234.ToString(форматирование))
Отлаживать.WriteLine(1234.23.ToString(форматирование))
Отлаживать.WriteLine(123456789.234.ToString(форматирование))

дает

0.230
0.234
1,234.230
123,456,789.234

Richard MacCutchan

Не обязательно, вам просто нужно указать максимум, который вы хотите отобразить, где по умолчанию используется значение 2.

Рейтинг:
0

Patrice T

Цитата:
Как я могу установить число с тысячным разделителем и с неограниченным десятичным числом ?

Если вы не найдете волшебную строку форматирования, которая удовлетворит ваши потребности, возможно, вы сможете сделать это сами с небольшим программированием.
Ваша проблема-десятичная часть, просто удалите ее из форматирования.
1) разделить строку по запятой
2) отформатируйте целочисленную часть так, как вы хотите
3) соедините обе части


Richard MacCutchan

См. мое решение, в котором показано, как .NET предоставляет эту функцию.

Patrice T

Я знаю, у меня просто другой подход.

Richard MacCutchan

Но зачем кому - то делать это таким образом?

Patrice T

Тот, который не использует .net или не знает вашего решения.

Рейтинг:
0

Nicomendox

на самом деле я разделил десятичную часть и основную числовую часть, а затем, после того как тысяча разделилась, я снова собрал их вместе. это работает отлично, но я спросил, есть ли простое и продуктивное решение.


Richard MacCutchan

Да, очень простой ответ, как указано в моем решении выше. Не пытайтесь заново изобрести колесо, когда .Сеть полна полезных классов и методов экономии времени; используйте документацию MSDN, чтобы ознакомиться с ними.

Nicomendox

Спасибо снова. но я хочу задать еще один вопрос.

например, когда я умножаю 1.23456789012 на 1.5

код таков :

Textbox3 и.Текст = Формат (((CDEC И(Текстовое Поле Textbox1.Текст)) * (Китайский Коллектив CDEC(Поле Textbox2.Текст)), "###,###,##0.############"))

С 12 цифрами для десятичных чисел тогда результат будет 1.419753073638

Когда я меняю 11 цифр на десятичные то результат получается 1,41975307364

Его округление до последнего 8 и левая сторона 3 стала 4

Как я могу организовать десятичные дроби без округления или рассвета ?