2011-06-28 13 views
2

私は値を変換する一般的な方程式を作ろうとしています。下記は用例です。プログラムでこれをどうすればできますか?数学の質問

9,873,912 -> 9,900,000 
125,930 -> 126,000 
2,345 -> 2,400 
280 -> 300 
28 -> 30 
In general, x -> n 

基本的にグラフを作成していますが、値をよりよく見せたいと考えています。 6桁以上の数字の場合は、少なくとも3つのゼロが必要です。 4桁以下の場合は、少なくとも2桁の数字が必要です。ただし、2桁の数字の場合は1桁の数字は問題ありません。

(カンマを無視して、例を読むのに役立ちます)とにかく、値xをこの新しい値nに変換したいと思います。 nを吐き出す式g(x)とは何ですか?

これは、objective-cプログラム(iPhoneアプリ)向けです。

+0

私はあなたが、すべてを説明してきた意味あなたはあなたの自己ことを書くことができますように聞こえます。 – zellio

+0

いいえ、丸めを行う方法がわからないので... – CodeGuy

+0

「有効数字」(時には「有効数字」と呼ばれます)を参照してください。 –

答えて

1

Ahhh丸めは一般的にプログラミングでは少し厄介です。私が示唆しているのは、10の力で割ること、intキャストすること、背中を掛けることです。非常に効率的ではありませんが、うまくいくでしょう。 Objective-Cでこれを行うことができるライブラリがあるかもしれませんが、わかりません。

if (x is > 99999) { 
    x = ((int)x/1000) * 1000; 
} 
else if (x > 999) { 
    x = ((int) x/100) * 100; 
} 
else if (x > 9) { 
    x = ((int) x/10) * 10; 
} 
+0

ありがとう! – CodeGuy

+0

これは動作しますが、S. Lottの答えはファーストクラスです。特にint(log10(n)) - 1の部分を勉強する価値があります。 –

+0

ええ、私はTim Kempと一緒です。 S.Lottには私よりも「正しい」答えがあります。それを理解して活用することは全体的には良いことになるでしょう。 – zellio

6

分割、切り詰め、乗算。

10**x * int(n/10**(x-d)) 

「x」とは何ですか?あなたの例では約int(log10(n))-1です。

「d」とは何ですか?それは有効数字の数です。 2または3を指定します。

+0

+1 ... int(log10(n)) - 1がここにあります。 – Steve

+0

ええ、一般化された数式は+1です。 – zellio

0

round()またはroundf()などの標準的なC関数を使用してください。コマンドラインでman roundを試してください。データ型によってはいくつかのオプションがあります。あなたはおそらく、同じ数を乗じ、適切な数で割るとすることにより、第1の値をスケーリングしたいと思う、何かのように:

int roundedValue = round(someNumber/scalingFactor) * scalingFactor; 
+0

ありがとう!完璧。 – CodeGuy

関連する問題