重要なお知らせ

「教えて! goo」は2025年9月17日(水)をもちまして、サービスを終了いたします。詳細はこちら>

電子書籍の厳選無料作品が豊富!

私は浮動小数点数を整数値に変換したいのですが、
各種検索エンジンで探してみたのですが、
ほしい情報が得られなかったので
どなたか浮動小数点数を整数値化する方法を知っていましたら
教えていただけないでしょうか?sprintfで表示可能なのはわかりましたが、
表示だけではなく、処理の中でも使用するので、変換できないと
だめなんですが、どなたか知っていませんでしょうか?

A 回答 (4件)

う~ん....


ユーザからの入力を問題にするだけなら, 正規表現で処理した方が簡単じゃないかなぁ?
もっとはっきりいうと, 「ユーザは整数で入力する」ということにしちゃえば
/^(?:0|[1-9]\d*)$/
にマッチさせるだけですよね. 浮動小数でも正規表現で書けたはず.
    • good
    • 0

どうも本当に質問者さんのやりたいことがわかりません。


単純に print したときは規定のフォーマットが使われて文字列化されるので
9.09998333572203e+17
のようになっているのでしょう。
17桁使うとして整数表示させるなら %17.0f とかいう書式もありますし、
先の回答に書いたように、データそのものは「浮動小数点数形式で格納されている整数」
なので、それを「整数化」というのが具体的にどういう操作を言っているのかわかりません。

入力文字列に対して正規表現を使うなりして validation してから
手持ちゴールドとやらの加減算処理をすればよいのではないでしょうか。

仮に909998333572203000のような文字列入力があって、それを数値化したときに
9.09998333572203e+17 という内部表現になっていたとしても
数値として扱うことはできますから、でかすぎる数字として弾くのは
難しいことではないと思います。
#たぶん下のほうの数字の精度が怪しいはず
    • good
    • 0

> 9.09998333572203e+17G


> という数値を整数にしたいんですがどうしたらいいでしょうか?
> 909998333572203000という整数値に変換したんですが・・・

上の数値と下の数値は表現の仕方が違うだけで、値としては同じですよ。
内部表現としての浮動小数点数ではなく純粋に整数として扱いたいということなら、
32bitの範囲に収まりませんので bigint なりを使わないとできません。

どういった目的でそのような整数値を使うのかを説明していただければ
もう少し詳しく書くこともできますけど。

この回答への補足

私はFFAというCGIゲームを運営しているのですが、
所持金や銀行預金などの数値を使用しているのですが
そのFFAというCGIゲームに欠点があり、NanやInfなどと
入力すると、実際に入金・引き出しができてしまうんです。
そのため、数字以外の文字が記入されている場合エラーが出るように
処理しているんですが、その際にe+??の[e+]が文字として
処理されてしまい、エラーが出てしまうんです。
そのため、整数に変換できないでしょうか?という質問をいたしました
できる限り、整数に変換できたほうが好ましいですが、大変な場合
他の処理を教えていただけるとありがたいです

補足日時:2008/06/20 08:51
    • good
    • 0

がると申します。


んと…例えば3.14を3にするイメージでよろしいですか?

もしそうであるならば。
$i = int(3.14);
という感じでいけると思いますので試してみて下さい。

この回答への補足

すいません。私の想像していた事とは違いました。
もしかしたら間違えて覚えてしまったのかもしれません
9.09998333572203e+17G
という数値を整数にしたいんですがどうしたらいいでしょうか?
909998333572203000という整数値に変換したんですが・・・

補足日時:2008/06/19 20:26
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!