Vb.net 仅显示数据量的三个有效数字
如何仅显示数据量的三个有效数字,即0,xxx;x、 xx;xx,x;xxx;x'xxx等 这是我的密码Vb.net 仅显示数据量的三个有效数字,vb.net,Vb.net,如何仅显示数据量的三个有效数字,即0,xxx;x、 xx;xx,x;xxx;x'xxx等 这是我的密码 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.
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(9225936896))
Console.ReadLine()
End Sub
End Module
产出:
目前我的分数是8798'54MB
要8'798MB,我怎么才能得到它
谢谢大家的帮助下面是您的
要使用有效数字而不是小数位数,请执行以下操作:
Public Function BytesToMegabytes(bytes As Long) As String
Dim dblAns As Double = (bytes / 1024) / 1024
If dblAns = 0 Then
Return "0"
End If
Dim significantFigures = 3
Dim magnitude = Math.Floor(Math.Log10(dblAns))
Dim v As Double = 10 ^ (magnitude - significantFigures + 1)
dblAns = Math.Floor(dblAns / v) * v
Dim ci = New CultureInfo("")
ci.NumberFormat.NumberDecimalSeparator = ","
ci.NumberFormat.NumberGroupSeparator = "'"
Return dblAns.ToString("#,##0.###", ci)
End Function
例如,Console.WriteLineBytesToMegabytes9225936896输出
8'790
如果将行Dim MANGINTFIGURES=3更改为Dim MANGINTFIGURES=4,则输出
8'798
根据您需要的舍入,您可能希望使用dblAns=Math.RounddblAns/v、MidpointRounding.AwayFromZero*v,或者可能使用Math.天花而不是Math.Floor。Return dblAns.ToStringN3,ci。@Jimi给我的格式与:Return dblAns.ToString,,0.00,ci您的预期输出是什么?123445568999/1024/1024。顺便说一句,ci打印117726'869,将所有这些额外字符添加到格式说明符是毫无意义的,0.00将具有与您相同的效果。您不需要指定每个组分隔符的确切位置;只是应该使用组分隔符。非常感谢您的回答,我只需要以MB为单位的最终输出,但是从太多的位置,例如9225936896为8'798MB,如何获得它?目前我的分数为8798'54 MB。@Mara问题中的有效数字存在冲突,因此我添加了如何更改它。您是否也希望千分位分隔符为“”?在我看来,这已经更好了,我希望它是一个“千分位分隔符”,如示例中所示:8'798MB@Mara如果您参考我对您之前关于该主题的问题的回答,您将看到我提到您可以设置ci.NumberFormat.NumberGroupSeparator的值。我已经相应地编辑了我的答案,我猜小数点分隔符是逗号,。