Skip to content

Commit 1db6393

Browse files
committed
add new page cstdlib/atof
1 parent f7d4f26 commit 1db6393

File tree

1 file changed

+75
-0
lines changed

1 file changed

+75
-0
lines changed

reference/cstdlib/atof.md

Lines changed: 75 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,75 @@
1+
# atof
2+
* cstdlib[meta header]
3+
* std[meta namespace]
4+
* function[meta id-type]
5+
6+
```cpp
7+
double atof( const char* str );
8+
```
9+
10+
## 概要
11+
12+
`str`を`float`に変換する。
13+
14+
## 変換方法
15+
16+
- 空白文字から始まる場合、最初の非空白文字から変換する。
17+
18+
- `0x` または `0X` の場合、空白でない16進数として処理する。
19+
20+
- `e`または`E`は、それより前を基数、その後ろを指数として処理する。
21+
22+
- \+ 、\-は変換後の符号に適用される。
23+
24+
- `INF`または`INFINITY`(大小文字区別せず)は`inf`を返す。
25+
26+
- NAN(大小文字区別せず)はそれ以前の数値を返す。もし以前の数値がないなら、`nan`を返す。
27+
28+
29+
## 返り値
30+
31+
変換可能ならば変換後の数値。
32+
33+
変換後の数値が`float`の範囲外なら、その動作は未定義である。
34+
35+
変換不能なら`0.0`を返す。
36+
37+
38+
## 例
39+
40+
```cpp example
41+
#include <cstdlib>
42+
#include <iostream>
43+
44+
int main()
45+
{
46+
std::cout << std::atof("0.0000000123") << '\n'
47+
<< std::atof("0.012") << '\n'
48+
<< std::atof("15e16") << '\n'
49+
<< std::atof("-0x1afp-2") << '\n'
50+
<< std::atof("inF") << '\n'
51+
<< std::atof("12Nan23") << '\n'
52+
<< std::atof("NAN") << '\n'
53+
<< std::atof("invalid") << '\n';
54+
}
55+
```
56+
57+
## バージョン
58+
### 処理系
59+
- Clang: ?
60+
- GCC: 13[mark verified]
61+
- ICC: ?
62+
- Visual C++
63+
64+
## 出力結果
65+
66+
```
67+
1.23e-08
68+
0.012
69+
1.5e+17
70+
-107.75
71+
inf
72+
12
73+
nan
74+
0
75+
```

0 commit comments

Comments
 (0)