人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

プログラムにおいて 浮動小数点データの0.00123というデータがあったとして
0.001だけを取り出したい場合、どのようなコードを書けばGoodでしょうか。

●質問者: central_dogma
●カテゴリ:コンピュータ インターネット
✍キーワード:コード データ プログラム 浮動小数
○ 状態 :終了
└ 回答数 : 5/5件

▽最新の回答へ

1 ● psycho24
●20ポイント

http://masudahp.web.fc2.com/n88basic/kiso/mon30.html

a=0.00123

x=(int(a*1000))/1000


2 ● kn1967
●20ポイント

(1)

ceil/floor/round等の関数が用意されている場合は、それを用いる。

http://www.google.co.jp/search?q=Math%81@ceil%81@floor%81@round

(2)

無いような環境の場合は、古くから使われている回答1の方法を用いる。

(3)

それも無いような環境については環境によるとしか・・・。


3 ● TRTr
●20ポイント

書き方は言語によるでしょうが、

1. 1000倍して

2. 小数点以下を切り捨て

3. 1000で割る

というのが基本と思います。


C言語なら

floor(val*1000)/1000


VBなら

Int(val * 1000) / 1000


と言った形になると思います。

http://www.atmarkit.co.jp/fdotnet/dotnettips/703mathfloorceiling...


切り捨てではなく四捨五入も、ほぼ同じ考え方で実装できるでしょう。


4 ● rsc
●20ポイント

こちらは参考になるでしょうか。下記URLのソフトのヘルプを参照下さい。

>IP(x)=SGN(x)*INT(ABS(x)) 'xの整数部分 (Integer Part)

>TRUNCATE(x,n)=IP(x*10^n)/10^n

上記の関数を作って、TRUNCATE(0.00123,3)とすればいいです。

IP(x)は、xが正の数しか扱わない場合、INT(x)でもいいです。

また、四捨五入の場合は、

>ROUND(x,n)=INT(x*10^n+0.5)/10^n

※参考URL

●(仮称)十進BASICのホームページ B A S I C

http://hp.vector.co.jp/authors/VA008683/


5 ● shat
●20ポイント

//JSで一番大きい小数?をとりだす。

var temp = 'http://yahoo.com';

alert(aaa(0.00123));

function aaa(xxx){

var yy = [];

for( var i=0; i<(''+xxx).length; i++ ){

var x = (''+xxx).charAt(i);

yy.push(x);

if( x!='0' && x!='.' ){

break;

}

}

return yy.join('');

}

関連質問


●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ