HSPポータル
サイトマップ お問い合わせ


HSPTV!掲示板


未解決 解決 停止 削除要請

2006
0409
ブラックマ実数型の変数で4解決


ブラックマ

リンク

2006/4/9(Sun) 04:37:44|NO.323

はじめまして。

0.120000

実数型で計算したときに答えは上記のような形で表示されますよね?
この後ろの0000を消して表示したいです。

たとえば
0.120000→0.12
40.00000→40
みたいな事ができる関数又はモジュールかなにかでできますか?またはありますか?
よろしくお願いします。

あと、検索したり、命令一覧やプログラムガイドもみました。



この記事に返信する


Irisawa

リンク

2006/4/9(Sun) 09:12:29|NO.326

単純に小数点部分がなかったら整数に変換するには以下のような関数書けばいいです。


#module #defcfunc AutoInt double p1 if p1 - int(p1) = 0 { return int(p1) } return p1 #global mes AutoInt(0.120000) mes AutoInt(40.00000) stop

実数の場合の後ろの0は消す必要はないのでは?

# これは実数の仕様上、表示されますが0.120000と0.12は数値としては同一です。
# これを文字列に変換すると"0.120000"と"0.12"なので違ってしまいますが。
# mes 0.120000 = 0.12 ; TRUE(1) が表示されます



kz3

リンク

2006/4/9(Sun) 09:38:08|NO.327

ブラックマさんへ:
>0.120000→0.12
>40.00000→40
>みたいな事ができる関数又はモジュールかなにかでできますか?またはありますか?

両方とも標準で用意されていません。

数値で扱う限り小数部の余計なゼロは省けませんが、
文字列としてなら文字列操作で出来ます。

余計なゼロをカットした文字列を返す処理は簡単に作れるので、
考え方だけ教えます。
1. 与えられた文字列の末尾から先頭に向かって一文字づつ読み込む。
2-a. 読み込んだ文字が'0'なら、その位置に$00を上書きして、処理続行 2-b. 読み込んだ文字が'.'なら、その位置に$00を上書きして終了 2-c. 読み込んだ文字が上記以外なら終了
作ってみて「こんなの作りました」って発表してみてください。(^^;

上のやり方では文字列中にピリオドが二つ以上入っていたり、
数値文字列でない文字列が与えられた場合などのチェックは考えません。
( こういうのは呼び出す側がチェックするべきなので... )



Yuki

リンク

2006/4/9(Sun) 13:46:51|NO.331

mes strf("%g", 0.12 )


桁数が大きいと 1.2-e10 の形になってしまいますが。



ブラックマ

リンク

2006/4/11(Tue) 15:04:13|NO.360

お陰様で悩んでいた部分が無事やっとわかりました。

Irisawaさん。kz3さん。Yukiさん。ありがとうございました。
これからもよろしくお願いします。



ONION software Copyright 1997-2021(c) All rights reserved.