2016-12-05 13 views
0

オカイ - 問題を言葉にする方法がたくさんあるので、この質問は存在しません。しかし、私はそれが存在しないと思う(あなたはインターネット検索がどのように知っている)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値を表示すると、元の変更されていないテキストと絶対値の順番が残ります。 (そして私は上記のコードが問題に対処していないことを理解しています。

質問:最初の3桁の有効数字のみを表示するようにデータ値を変更するにはどうすればよいですか?

それはちょうど私かもしれませんが、私はそれの背後にある数学を計算することに問題があります。 (そして、新しい変数の作成/プログラムの実行方法は私にとってはうまくいくので、それを提案するのを恐れないでください)。

ありがとうございました。

+0

'myExponent'が正しく設定されている場合、値/(10 ^(int)myExponent)'(擬似コード) – doctorlove

答えて

1

は(10のまたはパワー)、「大きさ」のためのいくつかのvaluemyExponentで考えると、我々はあなたがなど数百万人にこれを丸めている enter image description here

知っているので、あなたは、指数を丸める必要があります

lblMoney.Text = myFragments/(10^Math.Floor(myExponent)) 

myFragmentsが私たちが始めた金額の場合)

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 
関連する問題