値型に変換すると小数点以下が切り捨てられる

解決


涙サ  2007-08-01 09:36:44  No: 143765

ネット上から取得した、数値変換可能文字列を
Valで変換したんですが、小数点以下が切り捨てられてしまいます。
小数点以下まで表示させるにはどうしたらよいのでしょうか?


Dim お金 as double
お金 = Val(92.115)
カーソルを当てるとお金の中が92で変換されてしまう。


かさのば  2007-08-01 11:10:55  No: 143766

板を移動する場合は元スレと現行スレそれぞれにリンクを貼るようにして頂くと助かります。
後で見た人、今まで見ていた人が混乱してしまうので。
元スレ
http://madia.world.coocan.jp/cgi-bin/VBBBS/wwwlng.cgi?print+200707/07070026.txt

また、これも混乱を防ぐためですが、開発環境も合わせてご記入頂きますようお願いいたします。(Frameworkのバージョンとか)

本題ですが
さっき気付いたんですが
>>お金 = Val(92.115)
この92.115って元々数値データですよね?
文字列から変換するなら
お金 = Val("92.115")
のはず。

また「カーソルを当てると」というのはどのタイミングでのことでしょうか?
式「お金 = Val("92.115")」の実行直後ですか?
Console.WriteLine(Val("92.115"))とすると実行結果はどうなります?

最後に、聞き忘れてましたが、ここで使用しているVal()関数というのは
Microsoft.VisualBasic名前空間内のものを使用していると考えてよろしいでしょうか?

#現象が再現できる最低限のコードを提示していただけると助かります。


涙サ  2007-08-01 11:42:30  No: 143767

まことに申し訳ございません。
http://table.yahoo.co.jp/t?s=4755&g=d
の値を取得するプログラムなんですけど
たとえば36,700を取得して
double型に入れてやると36になります。
おそらくこの小数点扱いになっているのだろうと
おもってreplace関数で","を取り除こうとしたのですが
動作しませんでした。
手入力のコーディングですと","は取り除かれて
36,700は36700となるのですが。
ネット上から取り出したテキスト情報は
なぜか無反応でした。
そもそも、この","は少数点ではなく
桁を分かりやすくするためのドットみたいです。
よってVB側が変換不可能な文字列は無視して
頭の36だけ変換したのかな?と思っています。

>Microsoft.VisualBasic名前空間内のものを使用していると考えてよろしいでしょうか?
そのまま、Valと打ち込んでいるだけですので名前空間のものかはちょっと分かりかねます。

主なコード
 銘柄情報 = objTableItem.Innertext
 銘柄情報.Replace(",", "")
 高値 = Val(銘柄情報)


涙サ  2007-08-01 12:17:03  No: 143768

お騒がせして申し訳ないです。
自己解決しました。
どうやらリプレイスの使い方が誤っていたようでした。
ありがとうございました♪


YuO  2007-08-01 21:27:34  No: 143769

解決となっていますが……。

ReplaceとValを使わなくても,
Double.Parse("92,195", System.Globalization.NumberStyles.AllowThousands)
で92195が取得できますよ。


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

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






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