<bdo id='Oe2K0'></bdo><ul id='Oe2K0'></ul>

<small id='Oe2K0'></small><noframes id='Oe2K0'>

    1. <tfoot id='Oe2K0'></tfoot>

        <i id='Oe2K0'><tr id='Oe2K0'><dt id='Oe2K0'><q id='Oe2K0'><span id='Oe2K0'><b id='Oe2K0'><form id='Oe2K0'><ins id='Oe2K0'></ins><ul id='Oe2K0'></ul><sub id='Oe2K0'></sub></form><legend id='Oe2K0'></legend><bdo id='Oe2K0'><pre id='Oe2K0'><center id='Oe2K0'></center></pre></bdo></b><th id='Oe2K0'></th></span></q></dt></tr></i><div id='Oe2K0'><tfoot id='Oe2K0'></tfoot><dl id='Oe2K0'><fieldset id='Oe2K0'></fieldset></dl></div>

        <legend id='Oe2K0'><style id='Oe2K0'><dir id='Oe2K0'><q id='Oe2K0'></q></dir></style></legend>

        C++ 单精度和双精度混合计算的控制规则是什么?

        What are the rules governing C++ single and double precision mixed calculations?(C++ 单精度和双精度混合计算的控制规则是什么?)
      1. <small id='IOhWW'></small><noframes id='IOhWW'>

        • <tfoot id='IOhWW'></tfoot>
            <bdo id='IOhWW'></bdo><ul id='IOhWW'></ul>

            1. <legend id='IOhWW'><style id='IOhWW'><dir id='IOhWW'><q id='IOhWW'></q></dir></style></legend>
                <tbody id='IOhWW'></tbody>

                  <i id='IOhWW'><tr id='IOhWW'><dt id='IOhWW'><q id='IOhWW'><span id='IOhWW'><b id='IOhWW'><form id='IOhWW'><ins id='IOhWW'></ins><ul id='IOhWW'></ul><sub id='IOhWW'></sub></form><legend id='IOhWW'></legend><bdo id='IOhWW'><pre id='IOhWW'><center id='IOhWW'></center></pre></bdo></b><th id='IOhWW'></th></span></q></dt></tr></i><div id='IOhWW'><tfoot id='IOhWW'></tfoot><dl id='IOhWW'><fieldset id='IOhWW'></fieldset></dl></div>

                  本文介绍了C++ 单精度和双精度混合计算的控制规则是什么?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着跟版网的小编来一起学习吧!

                  问题描述

                  例如这些变量:

                  result (double)
                  a (double)
                  b (float)
                  c (float)
                  d (double)
                  

                  一个简单的计算:

                  result = a * (b + c) * d
                  

                  类型转换的方式和时间,以及如何确定每次计算的精度是多少?

                  How and when are the types converted and how do I figure out what precision each calculation is performed at?

                  推荐答案

                  所有操作都在相同类型的对象上完成(假设正常算术运算).

                  All operations are done on objects of the same type (assuming normal arithmetic operations).

                  如果你编写的程序使用不同的类型,那么编译器会自动升级ONE参数,使它们都相同.

                  If you write a program that uses different types then the compiler will auto upgrade ONE parameter so that they are both the same.

                  在这种情况下,浮动将升级为双打:

                  In this situations floats will be upgraded to doubles:

                  result      = a * (b + c) * d
                  
                  float  tmp1 = b + c;            // Plus operation done on floats.
                                                  // So the result is a float
                  
                  double tmp2 = a * (double)tmp1; // Multiplication done on double (as `a` is double)
                                                  // so tmp1 will be up converted to a double.
                  
                  double tmp3 = tmp2 * d;         // Multiplication done on doubles.
                                                  // So result is a double
                  
                  result      = tmp3;             // No conversion as tmp3 is same type as result.
                  

                  这篇关于C++ 单精度和双精度混合计算的控制规则是什么?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持跟版网!

                  本站部分内容来源互联网,如果有图片或者内容侵犯了您的权益,请联系我们,我们会在确认后第一时间进行删除!

                  相关文档推荐

                  What is inside .lib file of Static library, Statically linked dynamic library and dynamically linked dynamic library?(静态库、静态链接动态库和动态链接动态库的 .lib 文件里面是什么?)
                  How do I load a C DLL from the SXS in Python?(如何从 Python 中的 SXS 加载 C DLL?)
                  Can Cython code be compiled to a dll so C++ application can call it?(Cython 代码可以编译成 dll 以便 C++ 应用程序可以调用它吗?)
                  Delay Loading DLLs(延迟加载 DLL)
                  Throwing C++ exceptions across DLL boundaries(跨 DLL 边界抛出 C++ 异常)
                  Loading a dll from a dll?(从 dll 加载 dll?)

                    <tbody id='Ur4ib'></tbody>
                    <bdo id='Ur4ib'></bdo><ul id='Ur4ib'></ul>

                    • <small id='Ur4ib'></small><noframes id='Ur4ib'>

                      <legend id='Ur4ib'><style id='Ur4ib'><dir id='Ur4ib'><q id='Ur4ib'></q></dir></style></legend>

                        <tfoot id='Ur4ib'></tfoot>
                          1. <i id='Ur4ib'><tr id='Ur4ib'><dt id='Ur4ib'><q id='Ur4ib'><span id='Ur4ib'><b id='Ur4ib'><form id='Ur4ib'><ins id='Ur4ib'></ins><ul id='Ur4ib'></ul><sub id='Ur4ib'></sub></form><legend id='Ur4ib'></legend><bdo id='Ur4ib'><pre id='Ur4ib'><center id='Ur4ib'></center></pre></bdo></b><th id='Ur4ib'></th></span></q></dt></tr></i><div id='Ur4ib'><tfoot id='Ur4ib'></tfoot><dl id='Ur4ib'><fieldset id='Ur4ib'></fieldset></dl></div>