来自 API - VB.NET 的舍入数 - CultureInfo
Rounding number from API - VB.NET - CultureInfo
我目前正在使用此公式对从 API
中获得的数字进行四舍五入
Dim editedRatio As Decimal = Decimal.Round(Convert.ToDecimal(growth), 0)
returnRatio = editedRatio.ToString("0,0,,", CultureInfo.CurrentCulture)
returnRatio = "$" & returnRatio.Substring(0, returnRatio.Length - 2) & "B"
结果是,9B
我正在尝试返回 .9B
我试过将 调整为 editedRatio.ToString("0.0,,")
但它最终打破了舍入公式,例如:44954308000
有没有办法将逗号转换为小数点?
您可以尝试这样的操作:
因为看起来你想要 return 格式化的 数字 这是将原始输入字符串转换为 decimal
表示的结果,其中初始值除以 (1000 ^ [thousands separators])
。
实际上并不清楚这是否是预期值,但是除法:
editedRatio = Decimal.Divide(editedRatio, CDec(1000 ^ (growth.Length \ 3)))
可以简单修改为:
editedRatio = Decimal.Divide(editedRatio, (1000 ^ 3)
如果这是预期的输出。或 转换规则 定义的任何其他特定值。
Note1
:使用 {N2}
将小数转换为字符串,因为 {N1}
会导致四舍五入
Note2
:您也可以使用 new CultureInfo("en-Us")
和 {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)
打印:.9B
Private Sub my_method01()
Dim returnratio As String = "44954308000"
Dim editedRatio As Decimal = Decimal.Round(Convert.ToDecimal(returnratio), 0)
returnratio = editedRatio.ToString("0,0,,", System.Globalization.CultureInfo.CurrentCulture)
returnratio = "$" & returnratio.Substring(0, returnratio.Length - 2) & "B"
'Displays: ".9B"
End Sub
希望你喜欢。非常感谢你。编码快乐! :)
我目前正在使用此公式对从 API
中获得的数字进行四舍五入
Dim editedRatio As Decimal = Decimal.Round(Convert.ToDecimal(growth), 0)
returnRatio = editedRatio.ToString("0,0,,", CultureInfo.CurrentCulture)
returnRatio = "$" & returnRatio.Substring(0, returnRatio.Length - 2) & "B"
结果是,9B
我正在尝试返回 .9B
我试过将 调整为 editedRatio.ToString("0.0,,")
但它最终打破了舍入公式,例如:44954308000
有没有办法将逗号转换为小数点?
您可以尝试这样的操作:
因为看起来你想要 return 格式化的 数字 这是将原始输入字符串转换为 decimal
表示的结果,其中初始值除以 (1000 ^ [thousands separators])
。
实际上并不清楚这是否是预期值,但是除法:
editedRatio = Decimal.Divide(editedRatio, CDec(1000 ^ (growth.Length \ 3)))
可以简单修改为:
editedRatio = Decimal.Divide(editedRatio, (1000 ^ 3)
如果这是预期的输出。或 转换规则 定义的任何其他特定值。
Note1
:使用 {N2}
将小数转换为字符串,因为 {N1}
会导致四舍五入
Note2
:您也可以使用 new CultureInfo("en-Us")
和 {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)
打印:.9B
Private Sub my_method01()
Dim returnratio As String = "44954308000"
Dim editedRatio As Decimal = Decimal.Round(Convert.ToDecimal(returnratio), 0)
returnratio = editedRatio.ToString("0,0,,", System.Globalization.CultureInfo.CurrentCulture)
returnratio = "$" & returnratio.Substring(0, returnratio.Length - 2) & "B"
'Displays: ".9B"
End Sub
希望你喜欢。非常感谢你。编码快乐! :)