C++ Builder 串口控件 | C++ Builder 编程技巧 | C++ Builder 操作指南 | C++ Builder 参考手册 | 基础知识 | cfloat 浮点数 | cmath 数学函数 | • acos, acosf, acosl | • acosh, acoshf, acoshl | • asin, asinf, asinl | • asinh, asinhf, asinhl | • atan, atanf, atanl | • atan2, atan2f, atan2l | • atanh, atanhf, atanhl | • ceil, ceilf, ceill | • copysign, copysignf, copysignl | • cos, cosf, cosl | • cosh, coshf, coshl | • exp, expf, expl | • exp2, exp2f, exp2l | • expm1, expm1f, expm1l | • fabs, fabsf, fabsl | • floor, floorf, floorl | • fmod, fmodf, fmodl | • frexp, frexpf, frexpl | • hypot, hypotf, hypotl | • ldexp, ldexpf, ldexpl | • log, logf, logl | • log10, log10f, log10l | • log1p, log1pf, log1pl | • log2, log2f, log2l | • modf, modff, modfl | • nan, nanf, nanl | • poly, polyl | • pow, powf, powl | • pow10, pow10l | • round, roundf, roundl | • sin, sinf, sinl | • sinh, sinhf, sinhl | • sqrt, sqrtf, sqrtl | • tan, tanf, tanl | • tanh, tanhf, tanhl | • trunc, truncf, truncl | • _exception, _exceptionl | • _matherr, _matherrl | • HUGE_VAL, HUGE_VALF, HUGE_VALL, _LHUGE_VAL | • EDOM, ERANGE | • _mexcep, DOMAIN, SING, OVERFLOW, UNDERFLOW, TLOSS, PLOSS, STACKFAULT | • M_E, M_LOG2E, M_LOG10E, M_LN2, M_LN10 | • M_PI, M_PI_2, M_PI_4, M_1_PI, M_2_PI, M_1_SQRTPI, M_2_SQRTPI | • M_SQRT2, M_SQRT_2 | • DOMAIN error 定义域错误 | cstdlib 标准库函数 | System 字符串 | System 日期和时间 | System.Math.hpp 数学函数 | 其他数据类型 | VCL 基础类 | VCL 应用程序 | Pictures 图片 | Graphics 绘图 | Additional 控件 | System 控件 | A ~ Z 字母顺序排列的目录 | 网友留言/技术支持 |
|
trunc, truncf, truncl - 舍弃取整,取浮点数的整数部分,舍弃小数部分 |
函数原型:
函数原型 |
C90 |
C99 |
C++98 |
C++11 |
double trunc(double x); |
|
√ |
|
√ |
float truncf(float x); |
|
√ |
|
|
long double truncl(long double x); |
|
√ |
|
|
float trunc(float x); |
|
|
|
√ |
long double trunc(long double x); |
|
|
|
√ |
头文件:
#include <cmath>
命名空间:
std
参数:
x:浮点数
返回值:
取整之后的浮点数,保留整数部分,舍弃小数部分。
注:
目前所有的 C++ Builder 版本都没有这个函数,可以使用 std::modf 或 System::Int 函数替代。
如果确定数值范围在 int 或 __int64 范围之内,可以简单的进行强制类型转换来实现,否则必须使用下面表格的这两个函数替代。
使用 std::modf 函数替代 |
使用 System::Int 函数替代 |
template <typename T>
T trunc(T x){ T y; std::modf(x,&y); return y; } |
inline double trunc(double x){ return System::Int(x); }
inline float trunc(float x){ return System::Int(x); }
inline long double trunc(long double x){ return System::Int(x); } |
例子:
void __fastcall TForm1::Button1Click(TObject *Sender)
{
const wchar_t fmt[] = L"%6.2f %6.2f %6.2f %6.2f %6.2f %6.2llf\r\n";
UnicodeString s = L" value trunc floor ceil round RoundTo\r\n";
s.cat_sprintf(fmt, 5.4 , trunc( 5.4 ), floor( 5.4 ), ceil( 5.4 ), round( 5.4 ), RoundTo( 5.4 ,0));
s.cat_sprintf(fmt, 5.5 , trunc( 5.5 ), floor( 5.5 ), ceil( 5.5 ), round( 5.5 ), RoundTo( 5.5 ,0));
s.cat_sprintf(fmt, 6.5 , trunc( 6.5 ), floor( 6.5 ), ceil( 6.5 ), round( 6.5 ), RoundTo( 6.5 ,0));
s.cat_sprintf(fmt, 6.51, trunc( 6.51), floor( 6.51), ceil( 6.51), round( 6.51), RoundTo( 6.51,0));
s.cat_sprintf(fmt, 6.8 , trunc( 6.8 ), floor( 6.8 ), ceil( 6.8 ), round( 6.8 ), RoundTo( 6.8 ,0));
s.cat_sprintf(fmt, -5.4 , trunc(-5.4 ), floor(-5.4 ), ceil(-5.4 ), round(-5.4 ), RoundTo(-5.4 ,0));
s.cat_sprintf(fmt, -5.5 , trunc(-5.5 ), floor(-5.5 ), ceil(-5.5 ), round(-5.5 ), RoundTo(-5.5 ,0));
s.cat_sprintf(fmt, -6.5 , trunc(-6.5 ), floor(-6.5 ), ceil(-6.5 ), round(-6.5 ), RoundTo(-6.5 ,0));
s.cat_sprintf(fmt, -6.51, trunc(-6.51), floor(-6.51), ceil(-6.51), round(-6.51), RoundTo(-6.51,0));
s.cat_sprintf(fmt, -6.8 , trunc(-6.8 ), floor(-6.8 ), ceil(-6.8 ), round(-6.8 ), RoundTo(-6.8 ,0));
Memo1->Lines->Text = s;
} |
兼容性:
trunc, truncf, truncl 是一组 C++ 11 新标准函数,在 C++ Builder 里面可以使用 std::modf 或 System::Int 函数替代【注】
相关链接:
• ceil • floor • round • RoundTo • _matherr • 浮点数异常处理
|
|
|
|