仅显示数据量的三个有效数字



我怎么能只显示数据量的三个有效数字,即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.  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

输出:目前我得分为8,798'54 MB。

要达到 8'798 MB,我怎样才能得到它?

谢谢大家的帮助

继你上一个问题之后...

要使用有效数字而不是小数位:

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.WriteLine(BytesToMegabytes(9225936896))输出

8'790

如果将行Dim significantFigures = 3更改为Dim significantFigures = 4,则输出

8'798

根据所需的舍入,您可能希望改用dblAns = Math.Round(dblAns / v, MidpointRounding.AwayFromZero) * v,或者可能Math.Ceiling而不是Math.Floor

最新更新