EN JA
STRTOD(3)
STRTOD(3) FreeBSD Library Functions Manual STRTOD(3)

名称

strtod, strtof, strtoldASCII 文字列を浮動小数点に変換する

ライブラリ

Standard C Library (libc, -lc)

書式

#include < stdlib.h>

double
strtod( const char * restrict nptr, char ** restrict endptr);

float
strtof( const char * restrict nptr, char ** restrict endptr);

long double
strtold( const char * restrict nptr, char ** restrict endptr);

解説

これらの変換関数は、 nptr で指すれる文字列の最初の部分をそれぞれ double, float, long double 表現に変換します。

文字列の期待される形式は、オプションのプラス (``+'') またはマイナス (``-'') 記号に次のいずれかが続きます:

  • オプションで小数点文字を含む 10 進数字列から成る 10 進仮数部。
  • ``0X'' か ``0x'' に続くオプションで小数点文字を含む 16 進数字列から成る 16 進数仮数部。

どちらの場合も、仮数部はオプションで指数を続けることができます。指数は、 ``E'' か ``e'' (10 進定数用) または ``P'' に ``p'' (16 進定数用) にオプションでプラスまたはマイナス記号が続いて、さらに数字の並びが続くという形で構成されます。 10 進定数では、指数は仮数部がスケーリングされるべきで 10 の累乗を示します。 16 進定数では、スケーリングは代わりに 2 の累乗によって行われます。

もう一つは、文字列の一部がオプションのプラスかマイナス記号に続いて“INFINITY”または“NAN”で始まるなら、大文字小文字を無視して、それはそれぞれ無限または静かな (quiet) NaN として解釈されます。構文“NAN( s)”、ここで s は、英数字の文字列、は、呼び出し nan(“ s”); (それぞれ、 nanf(“ s”);と nanl(“ s”);) と同じ値を作成します。

上記の場合のいずれでも、文字列の先頭の ( isspace(3) 関数で定義されるような) 空白類文字はスキップされます。小数点文字はプログラムのロケール (カテゴリ LC_NUMERIC) で定義されます。

戻り値

strtod(), strtof(), strtold() 関数は、どんなときでも変換された値を返します。

endptrNULL でない場合は、変換に使われた最後の文字の次の文字へのポインタが、 endptr で参照される場所に格納されます。

変換が行われなかった場合は 0 が返され、 nptr の値は endptr で参照される場所に格納されます。

正確な値がオーバフローを引き起こすなら、 (その返り値の符号とタイプにしたがって) プラスまたはマイナスの HUGE_VAL HUGE_VALF, または HUGE_VALL が返され、 ERANGEerrno に格納されます。正確な値がアンダフローを引き起こすなら、 0 が返され、 ERANGEerrno に格納されます。

エラー

[ ERANGE]
オーバフローまたはアンダフローが起きました。

規格

strtod() 関数は、 ISO/IEC 9899:1999 (“ISO C99”) に適合しています。

作者

このソフトウェアの作者は、 David M. Gay です。

Copyright (c) 1998 by Lucent Technologies 
All Rights Reserved 
 
Permission to use, copy, modify, and distribute this software and 
its documentation for any purpose and without fee is hereby 
granted, provided that the above copyright notice appear in all 
copies and that both that the copyright notice and this 
permission notice and warranty disclaimer appear in supporting 
documentation, and that the name of Lucent or any of its entities 
not be used in advertising or publicity pertaining to 
distribution of the software without specific, written prior 
permission. 
 
LUCENT DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, 
INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS. 
IN NO EVENT SHALL LUCENT OR ANY OF ITS ENTITIES BE LIABLE FOR ANY 
SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES 
WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER 
IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, 
ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF 
THIS SOFTWARE.
May 11, 2010 FreeBSD