好的 - 我不是100%肯定这个问题不存在,因为有很多方法可以解决问题。但我认为它不存在(你知道互联网搜索是怎样的)s0请耐心等待。
我正在写一个简短的迷你游戏程序,用于在线课程。它涉及数字“货币”,我已经实施了一个对数“检查”,告诉用户他/她是否有“x”数量的金额。这只是背景。不是问题。
在程序中,他们有以下内容(在主窗体类中)。它在计时器部分,因为完整的程序需要不断更新“钱”
的任何增加 Dim myFragments As Integer
Dim FragmentExponent As Double
Dim myExponent As Double
FragmentExponent = myFragments
myFragments = 0 'insert whatever value to test
Private Sub tmrUnknown_Tick(sender As Object, e As EventArgs) Handles tmrUnknown.Tick
lblMoney.Text = myFragments
myExponent = Math.Log10(FragmentExponent)
If myExponent < 3 Then lblMoneyMagnitude.Text = " "
If myExponent >= 3 And myExponent <= 5 Then lblMoneyMagnitude.Text = "Thousand"
If myExponent >= 6 And myExponent <= 8 Then lblMoneyMagnitude.Text = "Million"
If myExponent >= 9 And myExponent <= 11 Then lblMoneyMagnitude.Text = "Billion"
If myExponent >= 12 And myExponent <= 14 Then lblMoneyMagnitude.Text = "Trillion"
If myExponent >= 15 And myExponent <= 17 Then lblMoneyMagnitude.Text = "Quadrillion"
end sub
...
你明白了。
但是当我将myMoney值显示给标签时,我仍然拥有原始未修改的文本,以及数量级的表示。 (我知道上面的代码没有解决这个问题,这是一个理解的背景帮助。)
问题:如何修改数据值以仅显示前三位有效数字?
可能只是我,但我正在弄清楚它背后的数学问题。 (并创建新变量/“重新路由”程序运行方式对我来说效果很好,所以不要害怕建议)。
非常感谢您的时间!
答案 0 :(得分:1)
给定value
一些{&#34;幅度&#34;} (或10的力量)是我们知道的myExponent
你将这个数字舍入到数百万等,所以你应该围绕指数
lblMoney.Text = myFragments / (10 ^ Math.Floor(myExponent))
(如果myFragments
是我们开始的金额)
答案 1 :(得分:0)
这有用吗:
Private Sub tmrUnknown_Tick(sender As Object, e As EventArgs) Handles tmrUnknown.Tick
lblMoney.Text = myFragments
myExponent = Math.Log10(FragmentExponent)
Select Case True
Case myExponent < 3
lblMoneyMagnitude.Text = ""
Case myExponent < 6
lblMoneyMagnitude.Text = "Thousand"
Case myExponent < 9
lblMoneyMagnitude.Text = "Million"
Case myExponent < 12
lblMoneyMagnitude.Text = "Billion"
Case myExponent < 15
lblMoneyMagnitude.Text = "Trillion"
Case myExponent < 18
lblMoneyMagnitude.Text = "Quadrillion"
Case Else
lblMoneyMagnitude.Text = "Too Damn Much"
End Select
If Not lblMoneyMagnitude.Text = "" Then
lblMoney.Text = Int(myMoney / 10 ^ myExponent).ToString
End If
End Sub