Вы можете попробовать что-то вроде этого:
Так как похоже, что вы хотите вернуть отформатированное число , которое является результатом преобразования исходной входной строки в decimal
представление, где начальное значение делится на (1000 ^ [thousands separators])
.
На самом деле не ясно, является ли это ожидаемое значение, но деление:
editedRatio = Decimal.Divide(editedRatio, CDec(1000 ^ (growth.Length \ 3)))
можно изменить просто:
editedRatio = Decimal.Divide(editedRatio, (1000 ^ 3)
, если вместо этого ожидаемый результат. Или любое другое заданное c значение, определенное правилом преобразования .
Note1
: десятичное число преобразуется в строку с использованием {N2}
, поскольку {N1}
вызывает округление
Note2
: вы также можете использовать * Формат 1028 * и {C2}
вместо CultureInfo.InvariantCulture
и {N2}
для вставки символа $
. Но я не уверен, что $
на самом деле предназначен для представления валюты здесь.
С growth = "44954308000"
:
Dim editedRatio As Decimal = 0.0D
Dim returnRatio As StringBuilder = New StringBuilder()
If Decimal.TryParse(growth, editedRatio) Then
editedRatio = Decimal.Divide(editedRatio, CDec(1000 ^ (growth.Length \ 3)))
returnRatio.AppendFormat(CultureInfo.InvariantCulture, "${0:N2}", editedRatio)
returnRatio.Remove(returnRatio.Length - 1, 1).Append("B")
End If
Console.WriteLine(returnRatio)
Отпечатки: $44.9B