小数点の桁数を固定するには?

解決


ヒッキー  2004-07-06 20:49:11  No: 114547

色々な数値を特定の桁数の小数点をつけて表示したいのですが、どうすればよいのでしょうか?

例えば、
12.4
3.95
0.1
100
50.123
などの数値があるとしたら、
12.40
3.95
0.10
100.00
50.12
などです。

色々試してみたのですが、うまくいきませんでした。
format(12.4,"0.00") だと 12.4 だし、
FormatNumber((12.4), 2) でも  12.4  でした。

なにか、良い方法はないでしょうか?ご教授よろしくお願いしますm(_ _)m


nanashi  2004-07-06 21:02:04  No: 114548

FormatNumberっていう関数は初めて知ったんですけど、
そのどちらでやっても期待通りの値が出てきますが…。

どのように格納、表示しているのでしょうか?
数値型(Single、Doubleなど)の変数に値を入れたりしてませんか?


ヒッキー  2004-07-06 21:08:46  No: 114549

ご解答ありがとうございます!

はい、ご指摘の通り、変数に入ってます。int型です。
正確に言うと、計算式で入ってます。 4 / int という感じです。
数値型の変数に格納した値を計算すると、ダメなのでしょうか?


Max  2004-07-06 21:21:08  No: 114550

int型は小数部が入るはずがないので何か勘違いしているんじゃないですか?


Max  2004-07-06 21:26:04  No: 114551

数値の12.4も12.40も12.400も同じ値ということは分かりますよね?
Format関数は12.4という値を書式をつけて文字型に出力するものです
なんか変数の型と書式がこんがらがっていらっしゃるようなので
その辺りを自分なりに整理された方が良いでしょう。


ヒッキー  2004-07-06 21:36:55  No: 114552

ご指摘ありがとうございます。

こちらとしては、12.40と表示することが目的なのですが、今しがた、
int,long,variant,single,doubleと色々してみましたが、だめでした。

すみません、もっと正確に書くと

Str(FormatNumber(((numLong / numLong2) * 100), 2)) + "%"

このような感じなのですが、12.40  のように、どのようなあたいでも、
小数点第2位まで表示させる方法ってあるのでしょうか?


とろ未  2004-07-06 22:01:21  No: 114553

> Str(FormatNumber(((numLong / numLong2) * 100), 2)) + "%"

の場合、 FormatNumber は無いのと一緒ですよ。
((numLong / numLong2) * 100)
の結果を
FormatNumber( , 2)
で小数2桁の書式の文字列に変換していますが、
Str()
を呼ぶ事で
引数は数値型なので暗黙の内に書式化された数値の文字列を
更に数値に変換して、
それを書式なしの文字列に変換することになります。

関数の引数、戻り値の型に注意しましょう。
例の場合、 Str() は不要では?


ヒッキー  2004-07-06 22:29:01  No: 114554

ご解答ありがとうございます。
str()をはずすと、思い通りの結果になりました!!

FormatNumberは文字列に変換しているのですね。大変勉強になりました。

これかも、精進してがんばりたいと思います。
nanashiさん、Maxさん、とろ未さん、本当にありがとうございましたm(_ _)m


※返信する前に利用規約をご確認ください。

※Google reCAPTCHA認証からCloudflare Turnstile認証へ変更しました。






  このエントリーをはてなブックマークに追加