数字→数値への変換 – プログラミング – Home

通知
すべてクリア

数字→数値への変換


たけ
 たけ
(@たけ)
ゲスト
結合: 23年前
投稿: 3
Topic starter  

数字から数値への変換で標準関数「atoi()」などがありますが、
この関数を呼ぶ前に
そのCPUで利用可能な範囲内の数字かどうか(たとえば-32768~32767など)をチェックして
この範囲内ならば数字から数値へ変換可能な関数を作成しようと思っています。
しかし、この範囲チェックのうまいやり方がわからなくなやんでいます。

みなさんこのような数値の範囲チェックはどのようにしているのでしょうか?
もしよい方法を知っている方がいましたら
ご教授おねがいします。


引用解決済
トピックタグ
たいちう
 たいちう
(@たいちう)
ゲスト
結合: 23年前
投稿: 662
 

予めatof()を使えば、doubleの範囲内ではチェックができます。
万全を期すなら、atoi()を自作するのがよいと思います。
K&Rに簡単な例があったと思う。


返信引用
たけ
 たけ
(@たけ)
ゲスト
結合: 23年前
投稿: 1
 

ご返答ありがとうございます。

やっぱりすべての範囲を考えるとなるとatoi()といった関数を自作するしか
ないみたいですね。
>K&Rに簡単な例があったと思う。
残念ながら私はK&Rを持っていないのですが、
ほかに参考になるようなものを知っている
orほかにこの問題を解決できるよい方法を知っている方
がいましたら教えてください。
よろしくお願いします。


返信引用
kazuma
 kazuma
(@kazuma)
ゲスト
結合: 24年前
投稿: 217
 

strtolという関数があります。

MSDNによると、
> オーバーフローが発生すると LONG_MAX または LONG_MIN を返します。
> (中略)
> どちらの関数も、オーバーフローまたはアンダーフローが発生すると、
> グローバル変数 errno に ERANGE を設定します。
となっています。


返信引用

返信する

投稿者名

投稿者メールアドレス

タイトル *

プレビュー 0リビジョン 保存しました
共有:
タイトルとURLをコピーしました