プログラムにおいて 浮動小数点データの0.00123というデータがあったとして

0.001だけを取り出したい場合、どのようなコードを書けばGoodでしょうか。

回答の条件
  • URL必須
  • 1人2回まで
  • 登録:2009/10/22 21:49:43
  • 終了:2009/10/26 17:12:36

回答(5件)

id:kn1967 No.2

kn1967回答回数2915ベストアンサー獲得回数3012009/10/22 22:20:55

ポイント20pt

(1)

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

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

(2)

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

(3)

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

id:TRTr No.3

TRTr回答回数52ベストアンサー獲得回数132009/10/22 22:25:14

ポイント20pt

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

1. 1000倍して

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

3. 1000で割る

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


C言語なら

floor(val*1000)/1000


VBなら

Int(val * 1000) / 1000


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

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


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

id:rsc96074 No.4

rsc回答回数4359ベストアンサー獲得回数3982009/10/22 22:44:34

ポイント20pt

 こちらは参考になるでしょうか。下記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/

id:shat No.5

shat回答回数1ベストアンサー獲得回数02009/10/23 03:20:27

ポイント20pt

//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('');

}

コメントはまだありません

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

絞り込み :
はてなココの「ともだち」を表示します。
回答リクエストを送信したユーザーはいません