|
68 | 68 |
|
69 | 69 | </head> |
70 | 70 | <body> |
71 | | -<header data-kunai-mdinfo="{"meta": {"header": ["cmath"], "namespace": ["std"], "id-type": ["function"], "cpp": ["cpp11"]}, "sources": [{"id": "4f91919764837c223071e337be5cf431eeea2203", "source": "#include <iostream>\n#include <cmath>\n\nint main()\n{\n float result1 = std::copysign(1.0f, 2.0f);\n float result2 = std::copysign(1.0f, -2.0f);\n\n std::cout << result1 << std::endl;\n std::cout << result2 << std::endl;\n}\n"}], "page_id": ["reference", "cmath", "copysign"]}"> |
| 71 | +<header data-kunai-mdinfo="{"meta": {"header": ["cmath"], "namespace": ["std"], "id-type": ["function"], "cpp": ["cpp11"]}, "sources": [{"id": "942914393c52342a76a2ef1c4d4abf437082aba3", "source": "#include <iostream>\n#include <cmath>\n#include <limits>\n\nint main()\n{\n // \u901a\u5e38\u306e\u6570\u5024\n std::cout << \"1.0f, 2.0f : \" << std::copysign(1.0f, 2.0f) << std::endl;\n std::cout << \"0.0f, -2.0f : \" << std::copysign(0.0f, -2.0f) << std::endl;\n std::cout << \"1.5f, -0.0f : \" << std::copysign(1.5f, -0.0f) << std::endl;\n\n // \u7121\u9650\u5927\n const float inf = std::numeric_limits<float>::infinity();\n std::cout << \"-inf, 3.0f : \" << std::copysign(-inf, 3.0f) << std::endl;\n std::cout << \"3.0f, -inf : \" << std::copysign(3.0f, -inf) << std::endl;\n\n // NaN (Not a Number)\n // NaN\u306e\u7b26\u53f7\u3082\u30b3\u30d4\u30fc\u3055\u308c\u308b\u3002\n const float nan = std::numeric_limits<float>::quiet_NaN();\n std::cout << \" nan, -4.2f : \" << std::copysign(nan, -4.2f) << std::endl;\n std::cout << \"4.2f, -nan : \" << std::copysign(4.2f, -nan) << std::endl;\n}\n"}], "page_id": ["reference", "cmath", "copysign"]}"> |
72 | 72 | <nav class="navbar navbar-default" role="navigation"> |
73 | 73 | <div class="container-fluid"> |
74 | 74 | <div class="navbar-header"> |
|
188 | 188 |
|
189 | 189 | <p class="text-right"><small> |
190 | 190 | 最終更新日時(UTC): |
191 | | - <span itemprop="datePublished" content="2025-05-22T07:35:09"> |
192 | | - 2025年05月22日 07時35分09秒 |
| 191 | + <span itemprop="datePublished" content="2026-01-12T03:53:40"> |
| 192 | + 2026年01月12日 03時53分40秒 |
193 | 193 | </span> |
194 | 194 | <br/> |
195 | 195 | <span itemprop="author" itemscope itemtype="http://schema.org/Person"> |
196 | | - <span itemprop="name">Akira Takahashi</span> |
| 196 | + <span itemprop="name">teruyamato0731</span> |
197 | 197 | </span> |
198 | 198 | が更新 |
199 | 199 | </small></p> |
@@ -268,25 +268,42 @@ <h2><a class="cpprefjp-defined-word" data-desc="関数呼び出し式の評価 |
268 | 268 | <h2>備考</h2> |
269 | 269 | <ul> |
270 | 270 | <li>符号付きゼロを表現するが負のゼロを取り扱わない実装では、この関数はゼロを正と見なす。</li> |
| 271 | +<li>浮動小数点数の符号ビットを検出したい場合は、<code><a href="signbit.html">std::signbit</a></code>を使用できる。<code>NaN</code>の符号を検出できる移植性のある方法はこの2つのみである。</li> |
271 | 272 | <li>C++23では、(1), (2), (3)が(4)に統合され、<a class="cpprefjp-defined-word" data-desc="<stdfloat>で定義される内部表現の規定された浮動小数点数型" href="../stdfloat.html">拡張浮動小数点数型</a>を含む浮動小数点数型への<a class="cpprefjp-defined-word" data-desc="同名の関数を異なる引数・テンプレート・制約などで複数定義すること。または同名の関数の集合">オーバーロード</a>として定義された</li> |
272 | 273 | </ul> |
273 | 274 | <h2>例</h2> |
274 | | -<p><div class="yata" id="4f91919764837c223071e337be5cf431eeea2203"><div class="codehilite"><pre><span></span><code><span class="cp">#include</span> <span class="cpf"><a href="../iostream.html"><iostream></a></span><span class="cp"></span> |
| 275 | +<p><div class="yata" id="942914393c52342a76a2ef1c4d4abf437082aba3"><div class="codehilite"><pre><span></span><code><span class="cp">#include</span> <span class="cpf"><a href="../iostream.html"><iostream></a></span><span class="cp"></span> |
275 | 276 | <span class="cp">#include</span> <span class="cpf"><a href="../cmath.html"><cmath></a></span><span class="cp"></span> |
| 277 | +<span class="cp">#include</span> <span class="cpf"><a href="../limits.html"><limits></a></span><span class="cp"></span> |
276 | 278 |
|
277 | 279 | <span class="kt">int</span> <span class="nf">main</span><span class="p">()</span> |
278 | 280 | <span class="p">{</span> |
279 | | - <span class="kt">float</span> <span class="n">result1</span> <span class="o">=</span> <span class="n"><span style="color:#ff0000">std::copysign</span></span><span class="p">(</span><span class="mf">1.0f</span><span class="p">,</span> <span class="mf">2.0f</span><span class="p">);</span> |
280 | | - <span class="kt">float</span> <span class="n">result2</span> <span class="o">=</span> <span class="n"><span style="color:#ff0000">std::copysign</span></span><span class="p">(</span><span class="mf">1.0f</span><span class="p">,</span> <span class="o">-</span><span class="mf">2.0f</span><span class="p">);</span> |
| 281 | + <span class="c1">// 通常の数値</span> |
| 282 | + <span class="n"><a href="../iostream/cout.html">std::cout</a></span> <span class="o"><<</span> <span class="s">"1.0f, 2.0f : "</span> <span class="o"><<</span> <span class="n"><span style="color:#ff0000">std::copysign</span></span><span class="p">(</span><span class="mf">1.0f</span><span class="p">,</span> <span class="mf">2.0f</span><span class="p">)</span> <span class="o"><<</span> <span class="n"><a href="../ostream/endl.html">std::endl</a></span><span class="p">;</span> |
| 283 | + <span class="n"><a href="../iostream/cout.html">std::cout</a></span> <span class="o"><<</span> <span class="s">"0.0f, -2.0f : "</span> <span class="o"><<</span> <span class="n"><span style="color:#ff0000">std::copysign</span></span><span class="p">(</span><span class="mf">0.0f</span><span class="p">,</span> <span class="o">-</span><span class="mf">2.0f</span><span class="p">)</span> <span class="o"><<</span> <span class="n"><a href="../ostream/endl.html">std::endl</a></span><span class="p">;</span> |
| 284 | + <span class="n"><a href="../iostream/cout.html">std::cout</a></span> <span class="o"><<</span> <span class="s">"1.5f, -0.0f : "</span> <span class="o"><<</span> <span class="n"><span style="color:#ff0000">std::copysign</span></span><span class="p">(</span><span class="mf">1.5f</span><span class="p">,</span> <span class="o">-</span><span class="mf">0.0f</span><span class="p">)</span> <span class="o"><<</span> <span class="n"><a href="../ostream/endl.html">std::endl</a></span><span class="p">;</span> |
281 | 285 |
|
282 | | - <span class="n"><a href="../iostream/cout.html">std::cout</a></span> <span class="o"><<</span> <span class="n">result1</span> <span class="o"><<</span> <span class="n"><a href="../ostream/endl.html">std::endl</a></span><span class="p">;</span> |
283 | | - <span class="n"><a href="../iostream/cout.html">std::cout</a></span> <span class="o"><<</span> <span class="n">result2</span> <span class="o"><<</span> <span class="n"><a href="../ostream/endl.html">std::endl</a></span><span class="p">;</span> |
| 286 | + <span class="c1">// 無限大</span> |
| 287 | + <span class="k">const</span> <span class="kt">float</span> <span class="n">inf</span> <span class="o">=</span> <span class="n"><a href="../limits/numeric_limits.html">std::numeric_limits</a></span><span class="o"><</span><span class="kt">float</span><span class="o">>::</span><span class="n"><a href="../limits/numeric_limits/infinity.html">infinity()</a></span><span class="p">;</span> |
| 288 | + <span class="n"><a href="../iostream/cout.html">std::cout</a></span> <span class="o"><<</span> <span class="s">"-inf, 3.0f : "</span> <span class="o"><<</span> <span class="n"><span style="color:#ff0000">std::copysign</span></span><span class="p">(</span><span class="o">-</span><span class="n">inf</span><span class="p">,</span> <span class="mf">3.0f</span><span class="p">)</span> <span class="o"><<</span> <span class="n"><a href="../ostream/endl.html">std::endl</a></span><span class="p">;</span> |
| 289 | + <span class="n"><a href="../iostream/cout.html">std::cout</a></span> <span class="o"><<</span> <span class="s">"3.0f, -inf : "</span> <span class="o"><<</span> <span class="n"><span style="color:#ff0000">std::copysign</span></span><span class="p">(</span><span class="mf">3.0f</span><span class="p">,</span> <span class="o">-</span><span class="n">inf</span><span class="p">)</span> <span class="o"><<</span> <span class="n"><a href="../ostream/endl.html">std::endl</a></span><span class="p">;</span> |
| 290 | + |
| 291 | + <span class="c1">// NaN (Not a Number)</span> |
| 292 | + <span class="c1">// NaNの符号もコピーされる。</span> |
| 293 | + <span class="k">const</span> <span class="kt">float</span> <span class="n">nan</span> <span class="o">=</span> <span class="n"><a href="../limits/numeric_limits.html">std::numeric_limits</a></span><span class="o"><</span><span class="kt">float</span><span class="o">>::</span><span class="n"><a href="../limits/numeric_limits/quiet_nan.html">quiet_NaN()</a></span><span class="p">;</span> |
| 294 | + <span class="n"><a href="../iostream/cout.html">std::cout</a></span> <span class="o"><<</span> <span class="s">" nan, -4.2f : "</span> <span class="o"><<</span> <span class="n"><span style="color:#ff0000">std::copysign</span></span><span class="p">(</span><span class="n">nan</span><span class="p">,</span> <span class="o">-</span><span class="mf">4.2f</span><span class="p">)</span> <span class="o"><<</span> <span class="n"><a href="../ostream/endl.html">std::endl</a></span><span class="p">;</span> |
| 295 | + <span class="n"><a href="../iostream/cout.html">std::cout</a></span> <span class="o"><<</span> <span class="s">"4.2f, -nan : "</span> <span class="o"><<</span> <span class="n"><span style="color:#ff0000">std::copysign</span></span><span class="p">(</span><span class="mf">4.2f</span><span class="p">,</span> <span class="o">-</span><span class="n">nan</span><span class="p">)</span> <span class="o"><<</span> <span class="n"><a href="../ostream/endl.html">std::endl</a></span><span class="p">;</span> |
284 | 296 | <span class="p">}</span> |
285 | 297 | </code></pre></div> |
286 | 298 | </div></p> |
287 | 299 | <h3>出力</h3> |
288 | | -<p><pre><code>1 |
289 | | --1 |
| 300 | +<p><pre><code>1.0f, 2.0f : 1 |
| 301 | +0.0f, -2.0f : -0 |
| 302 | +1.5f, -0.0f : -1.5 |
| 303 | +-inf, 3.0f : inf |
| 304 | +3.0f, -inf : -3 |
| 305 | + nan, -4.2f : -nan |
| 306 | +4.2f, -nan : -4.2 |
290 | 307 | </code></pre></p> |
291 | 308 | <h3>備考</h3> |
292 | 309 | <p>特定の環境では、早期に <code>constexpr</code> 対応されている場合がある:</p> |
|
0 commit comments