草庐IT

floating-point-conversion

全部标签

C++——将 float 组设置为相同值的最快方法

我天真地认为我可以为此使用memset,但显然memset仅用于字符。是否有一个memset类型的东西可以在float组上工作?或者简单迭代是将单个值复制到数组中每个位置的最快方法? 最佳答案 我不会谈论什么代码运行得最快。您应该在预期的环境中自己比较它们。但是,这里有两个可读、可维护、正确的解决方案。std::fill(std::begin(array),std::end(array),3.14);或者,如果你有一个动态数组:std::fill(array,array+size,3.14);

c++ - g++ 警告 : conversion to uint16_t from int may alter its value

根据高级SO用户的建议,我最近开始使用-Wconversion进行编译。在我的代码库上标记。这产生了很多警告,其中一些是合法的(例如,不必要地添加signed和unsigned类型),但也产生了一些令人头疼的警告,如下所示:#includeintmain(){uint16_ta=4;uint16_tb=5;b+=a;return0;}当我用g++-Wconversion-std=c++11-O0myFile.cpp编译时,我明白了warning:conversionto'uint16_t{akashortunsignedint}'from'int'mayalteritsvalue[-W

c++ - g++ 警告 : conversion to uint16_t from int may alter its value

根据高级SO用户的建议,我最近开始使用-Wconversion进行编译。在我的代码库上标记。这产生了很多警告,其中一些是合法的(例如,不必要地添加signed和unsigned类型),但也产生了一些令人头疼的警告,如下所示:#includeintmain(){uint16_ta=4;uint16_tb=5;b+=a;return0;}当我用g++-Wconversion-std=c++11-O0myFile.cpp编译时,我明白了warning:conversionto'uint16_t{akashortunsignedint}'from'int'mayalteritsvalue[-W

C++ 疯狂 typedef : what is the point of allowing this syntax by the Standard?

老熟人:typedefintcute_int;//cute:commonandfamiliarsyntax.这个语法很完美。没问题。现在,当我们可以像上面那样编写typedef时,那么允许这种语法的意义何在:inttypedefcrazy_int;//crazy:uncommonandunfamiliarsyntax.只是为了迷惑程序员?这种语法是否在任何地方都需要(实际上我们已经使用了前一种)?从编译器的角度你怎么看?他们觉得它可爱还是疯狂?还是对编译器根本不重要?顺便说一句,这段代码来自这里:Useoftypenamekeywordwithtypedefandnew如果您想知道这是

C++ 疯狂 typedef : what is the point of allowing this syntax by the Standard?

老熟人:typedefintcute_int;//cute:commonandfamiliarsyntax.这个语法很完美。没问题。现在,当我们可以像上面那样编写typedef时,那么允许这种语法的意义何在:inttypedefcrazy_int;//crazy:uncommonandunfamiliarsyntax.只是为了迷惑程序员?这种语法是否在任何地方都需要(实际上我们已经使用了前一种)?从编译器的角度你怎么看?他们觉得它可爱还是疯狂?还是对编译器根本不重要?顺便说一句,这段代码来自这里:Useoftypenamekeywordwithtypedefandnew如果您想知道这是

c++ - 表示小于 1 的最大 float

我正在做一些四舍五入的计算,偶然发现了一个问题。对于给定的浮点类型,如何表示小于1的最大数量?也就是说,我如何写/表示值x这样x=1对于任何y>0.在分数中,这将是x=(q-1)/q在哪里q是类型的精度。例如,如果您计算1/999然后递增x=998/999.对于给定的类型(float、double、longdouble),如何表示x在代码中?我还想知道y的所有值是否都存在这样的值.也就是说,如y's指数变小也许关系不再成立。所以一个对y有一定范围限制的答案也是可以接受的。(我想要的x的值还是存在的,只是关系可能表达的不好。) 最佳答案

c++ - 表示小于 1 的最大 float

我正在做一些四舍五入的计算,偶然发现了一个问题。对于给定的浮点类型,如何表示小于1的最大数量?也就是说,我如何写/表示值x这样x=1对于任何y>0.在分数中,这将是x=(q-1)/q在哪里q是类型的精度。例如,如果您计算1/999然后递增x=998/999.对于给定的类型(float、double、longdouble),如何表示x在代码中?我还想知道y的所有值是否都存在这样的值.也就是说,如y's指数变小也许关系不再成立。所以一个对y有一定范围限制的答案也是可以接受的。(我想要的x的值还是存在的,只是关系可能表达的不好。) 最佳答案

c# - float 比双倍慢吗? 64位程序运行速度比32位程序快吗?

使用float类型是否比使用double类型慢?我听说现代Intel和AMDCPU使用double计算比使用float更快。标准数学函数(sqrt、pow、log、sin、cos等)?以单精度计算它们应该会快得多,因为它应该需要更少的浮点运算。例如,单精度sqrt可以使用比doublesqrt更简单的数学公式。另外,我听说标准数学函数在64位模式下更快(在64位操作系统上编译和运行时)。对此有什么明确的答案? 最佳答案 经典的x86架构使用浮点单元(FPU)来执行浮点计算。FPU在其内部寄存器中执行所有计算,每个寄存器都有80位精度

c# - float 比双倍慢吗? 64位程序运行速度比32位程序快吗?

使用float类型是否比使用double类型慢?我听说现代Intel和AMDCPU使用double计算比使用float更快。标准数学函数(sqrt、pow、log、sin、cos等)?以单精度计算它们应该会快得多,因为它应该需要更少的浮点运算。例如,单精度sqrt可以使用比doublesqrt更简单的数学公式。另外,我听说标准数学函数在64位模式下更快(在64位操作系统上编译和运行时)。对此有什么明确的答案? 最佳答案 经典的x86架构使用浮点单元(FPU)来执行浮点计算。FPU在其内部寄存器中执行所有计算,每个寄存器都有80位精度

c++ - 为什么我可以将 int 和 BOOL 强制转换为 void*,但不能 float ?

void*是C和衍生语言的一个有用特性。例如,可以使用void*将Objective-C对象指针存储在C++类中。我最近在做一个类型转换框架,由于时间限制有点懒——所以我使用了void*...这就是这个问题的来历:为什么我可以将int类型转换为void*,但不能将浮点类型转换为void*? 最佳答案 BOOL不是C++类型。它可能是typedef或在某处定义的,在这些情况下,它与int相同。例如,Windows在Windef.h中有这个:typedefintBOOL;所以你的问题归结为,为什么你可以将int类型转换为void*,但不