API-VB.NET-CultureInfo中的舍入数
我目前正在使用这个公式对从API获得的数字进行四舍五入API-VB.NET-CultureInfo中的舍入数,vb.net,rounding,Vb.net,Rounding,我目前正在使用这个公式对从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)
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"
结果是$449b
我正试图拿回449亿美元
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: "$44.9B"
End Sub
我曾尝试过将编辑器调整为editedRatio.ToString(“0.0,,”)
,但最终打破了舍入公式,例如:44954308000
有没有办法将逗号转换成小数点?您可以尝试以下方法: 因为它看起来像是要返回一个格式化的数字,该数字是原始输入字符串转换为
十进制
表示的结果,其中初始值除以(1000^[千位分隔符])
实际上还不清楚这是否是预期值,但划分:
editedRatio = Decimal.Divide(editedRatio, CDec(1000 ^ (growth.Length \ 3)))
可以简单地在以下位置进行修改:
editedRatio = Decimal.Divide(editedRatio, (1000 ^ 3)
如果这是预期的输出。或转换规则定义的任何其他特定值
Note1
:使用{N2}
将十进制转换为字符串,因为{N1}
导致四舍五入Note2
:您也可以使用新文化信息(“en-Us”)
和{C2}
格式而不是文化信息。不变量文化
和{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)
打印:449亿美元
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: "$44.9B"
End Sub
我希望你喜欢它。非常感谢你。快乐编码!:) 输入是什么?为什么不使用正确的格式和CultureInfo.InvariantCulture
?输入是44954308000,我使用的是项目中的现有代码。不确定cultureinfo的正确格式。如何将44954308000
转换为44.6
?如果您知道这个数字代表什么以及转换规则是什么,那么可能44594308000
可以。你是在拿上千个分隔符左边和右边的东西吗?对不起,你是对的,因为我打错了。44954308000应该变成44.9