vb.net - 将字节转换为兆字节时的 NaN 结果
问题描述
如何修复将字节转换为兆字节的方法而不是作为结果 NaN。这是我的方法:
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 = 4
Dim magnitude = Math.Floor(Math.Log10(dblAns)) 'In this Line I get the NaN
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
随着Dim usedInklData = BytesToMegabytes(-3271356861)
我得到正确的结果。
我得到Dim usedInklData = BytesToMegabytes(-776150324)
了 NaN 值。
请建议我如何纠正这个问题。
感谢大家的帮助。
解决方案
您如何记住您的输入是否为负数,如果是负数,则在以正数进行计算后翻转结果:
Public Function BytesToMegabytes(bytes As Long) As String
Dim isNeg = bytes < 0
If isNeg Then bytes *= -1
Dim dblAns As Double = (bytes / 1024) / 1024
If dblAns = 0 Then
Return "0"
End If
Dim significantFigures = 4
Dim magnitude = Math.Floor(Math.Log10(dblAns)) 'In this Line I get the NaN
Dim v As Double = 10 ^ (magnitude - significantFigures + 1)
dblAns = Math.Floor(dblAns / v) * v
Dim ci = New CultureInfo("")
ci.NumberFormat.NumberDecimalSeparator = ","
ci.NumberFormat.NumberGroupSeparator = "'"
If isNeg Then dblAns *= -1
Return dblAns.ToString("#,##0.###", ci)
End Function
推荐阅读
- python - 运行异步进程时更新 GUI
- regex - Kusto:提取文本中的唯一词
- laravel - laravel 干预图像不显示图像
- c# - 你好。我找到年龄。在 textbox1 中键入用户 DOB 后,年龄应自动显示在 textbox2 中,无需任何点击事件
- reactjs - 无法在反应中使用地图访问我的状态
- wordpress - 谷歌云计算引擎不工作
- regex - Powershell Regex - 仅当包含字符串 C 时才在字符串 A 和字符串 B 之间替换
- java - 基本 Spring 引导 CRUD 中的 HttpMediaTypeNotSupportedException
- c - C中匿名联合赋值的警告
- java - 如何在 Windows 中使用 Java 清空回收站?