草庐IT

rounding

全部标签

c++ - 如何检查float是否为整数?

如果float为3.00,printf函数的%g能够显示整数3,并将显示3.01如果float不是整数float。如果不将数字格式化为字符串,您如何通过一些代码自己完成此操作? 最佳答案 没有真正简单的答案整数值在float和double格式中确实有精确的表示。所以,如果它真的已经是完整的,您可以使用:f==floor(f)但是,如果您的值是计算的结果,其中某一点涉及任何类型的非零小数部分,那么您需要担心您可能有一些非常接近整数但不是整数的东西真的,完全一样,到最后一点都一样。您可能希望将其视为不可或缺的一部分。一种可能的方式:fa

c++ - 舍入整数例程

教程中的整数运算让我感到困惑。准确的说,整数除法。看似首选的方法是将除数转换为float,然后将float四舍五入为最接近的整数,然后将其转换回整数:#includeintround_divide_by_float_casting(inta,intb){return(int)std::roundf(a/(float)b);}然而,这就像用右手挠左耳一样。我使用:intround_divide(inta,intb){returna/b+a%b*2/b;}虽然没有什么突破,但不标准的事实让我怀疑我是否遗漏了什么?尽管我进行了(尽管是有限的)测试,但我找不到两种方法给我不同结果的任何情况。有

c++ - 四舍五入到最接近和更大的 float

我想使用C/C++将大双数(>1e6)舍入到最接近但更大的float。我试过这个,但我不确定它是否总是正确的,也许有最快的方法来做到这一点:intmain(){//xisthedoublewewanttorounddoublex=100000000005.0;doubley=log10(x)-7.0;floata=pow(10.0,y);floatb=(float)x;//ctheclosestroundupfloatfloatc=a+b;printf("%.12f%.12f%.12f\n",c,b,x);return0;}谢谢。 最佳答案

c++ - 错误 : ambiguates old declaration ‘double round(double)’

/usr/include/i386-linux-gnu/bits/mathcalls.h:311:1:error:ambiguatesolddeclaration‘doubleround(double)’g.cpp:Infunction‘intround(double)’:g.cpp:14:24:error:newdeclaration‘intround(double)’/usr/include/i386-linux-gnu/bits/mathcalls.h:311:1:error:ambiguatesolddeclaration‘doubleround(double)’#includ

c++ - 为什么 GCC 允许在 C++ 中使用 round() 即使带有 ansi 和 pedantic 标志?

即使使用-ansi和-pedantic标志,这个程序在GCC下编译是否有充分的理由?#includeintmain(intargc,char*argv[]){doublex=0.5;returnstatic_cast(round(x));}使用g++-ansi-pedantic-Walltest.cpp-otest编译干净(甚至没有警告)。我看到两个问题:round()不应该在符合ISO的模式下对C++可用(因为它来自C99)即使round()在这种情况下可用,它也只能在std命名空间中可用我错了吗? 最佳答案 Thisisabug

c++ - std::round 不是 std on android 的成员

我在为Android和iOS构建的Qt应用程序上使用来自C++11的std::round。但是在android上,我得到的错误是std::round不是std的成员尽管包含cmathheader。如何让std::round在android上工作?是否有std::round的替代方案?以下是我的android环境:ANDROID_NDK_PLATFORM=android-23NDKversion=r13bANDROID_NDK_TOOLCHAIN_VERSION=4.9 最佳答案 Android-NDK中似乎缺少cmathheader

Educational Codeforces Round 161 (Rated for Div. 2) E题 动态规划逼近,二进制拆分补充,注意严格递增strictly increasing

Problem-E-Codeforces目录推荐视频:题意:细节(我踩得没什么价值的坑):思路:对样例3(X=13)做解释:——————总思路:——————动态规划逼近:——————二进制拆分补充剩余:核心代码: 推荐视频:E_哔哩哔哩_bilibili其实有一些细节说的不是特别清楚好理解,可以结合我的题解来看。但是对题目的解析说的还是特别好的 题意:你需要制作一个数组,使其严格递增子序列的数目为X细节(我踩得没什么价值的坑):1.严格递增strictlyincreasing,我直到看了别人的题解才发现,,才能看懂样例,,2.好好读题,我靠X是1e18了,得longlong3.快速逼近的时候w

c++ - Visual Studio 2012 中的 round()、rint()(等等)C++ 函数在哪里?

这些页面:http://www.cplusplus.com/reference/cmath/round/http://www.cplusplus.com/reference/cmath/rint/暗示这些函数是C++11的一部分,而VisualStudio2012似乎基本上支持C++11中的所有内容……所以四舍五入函数到底在哪里(更不用说其他附加数学函数了)?!我知道如何滚动我自己的舍入函数,但在这一点上它看起来很荒谬。我是否只是在这里遗漏了一些东西并且有一些特殊的std::和tr1::组合或另一个头文件来访问这些? 最佳答案 正如

c++ - 为什么 sprintf_s 在不同版本的 Visual Studio 中给出不同的结果?

sprintf_s(buf,"%.*f",14,0.182696884245135);在VS2008中=0.18269688424514在VS2015中=0.18269688424513sprintf_s的行为是否改变了?我怎样才能得到旧的行为? 最佳答案 我们为theUniversalCRT重写了浮点解析器和格式化程序和VisualC++2015以提高正确性。查看BreakingChangesinVisualC++VisualC++2015文档;有一节标题为“浮点格式和解析”。VisualC++2015结果是正确舍入的结果。输入字

c++ - 使用 Boost 舍入到 C++ 中最接近的数字?

有没有办法在Boost库中四舍五入到最接近的数字?我指的是任何数字,2、5、17等等。或者有其他方法吗? 最佳答案 您可以使用C99中提供的lround。#include#includeintmain(){cout(输出1、2、2)。如果您需要和/或如何需要启用C99支持,请检查您的编译器文档。 关于c++-使用Boost舍入到C++中最接近的数字?,我们在StackOverflow上找到一个类似的问题: https://stackoverflow.com/q