Установка формата строки с одинарной кавычкой или двойным форматом - PullRequest
0 голосов
/ 16 января 2020

как я могу исправить свой метод, который в настоящее время конвертирует байты в мегабиты в эту форму double 90979.32

это мой код:

 Public Function BytesToMegabytes(Bytes As Double) As Double
        'This function gives an estimate to two decimal
        'places.  For a more precise answer, format to
        'more decimal places or just return dblAns

        Dim dblAns As Double
        dblAns = (Bytes / 1024) / 1024
        BytesToMegabytes = Format(dblAns, "###,###,##0.00")

    End Function

Мне, наконец, нужна строка в формате: 90979'32. Поэтому мне нужно, чтобы это был один символ в формате вместо десятичной точки. Как я могу это сделать? Спасибо всем за помощь!

1 Ответ

3 голосов
/ 16 января 2020

Число имеет такой формат, только когда оно представляется пользователю в виде строки. До этого это просто число.

Метод .ToString может принимать параметр, который сообщает ему, какую культуру использовать для форматирования.

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

Option Strict On

Imports System.Globalization

Module Module1

    Public Function BytesToMegabytes(Bytes As Long) As String
        'This function gives an estimate to two decimal
        'places.  For a more precise answer, format to
        'more decimal places or just return dblAns

        Dim dblAns As Double = (Bytes / 1024) / 1024

        Dim ci = New CultureInfo("en-GB")
        ci.NumberFormat.NumberDecimalSeparator = "'"

        Return dblAns.ToString("###,###,##0.00", ci)

    End Function

    Sub Main()

        Console.WriteLine(BytesToMegabytes(123445568999))

        Console.ReadLine()

    End Sub

End Module

Выходы:

117,726'87

Вы, вероятно, знаете код для культуры, которую вы хотите использовать, поэтому, если вы используете это вместо «en-GB», тогда не будет необходимости устанавливать NumberDecimalSeparator.

Если вы не хотите использовать запятые для группировки номеров, добавьте

ci.NumberFormat.NumberGroupSeparator = ""

Обратите внимание, что тип Long, вероятно, лучше, если вы имеете дело с байтами. Тип возвращаемого значения из функции должен быть таким же, как в объявлении: использование Option Strict On поможет вам в подобных вещах, и вы должны установить его как значение по умолчанию для нового VB. NET проекты.


Ссылка: NumberFormatInfo Class

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