需要帮助格式化数字c++

Need help formatting numbers C++

本文关键字:数字 c++ 格式化 帮助      更新时间:2023-10-16

谁能帮助一个新手?如果我有一个数字4.561,它是从一个方程推导出来的,我怎么能只显示.561而忽略4 ?

提前感谢。我是编程新手,这是作业的一部分。任何帮助都将非常感激。我在c++编码

不确定这是否是您需要的,但请检查一下。

float f = 4.561;
f = f-(long)f;
cout << "Value of f is : " << f << endl;

math.h:

使用floor会感觉更好。
f = 4.561
if (f>=0) f=f-floor(f);
 else     f=f-ceil(f);
// here f = 0.561

的原因如下:

  1. 由于您无法控制转换为整型(f-long(f)),至少我不知道它是否被明确定义为标准,它使用整数部分或四舍五入。

  2. 如果你的浮点值比你的整型能容纳更大的数字怎么办?我知道对于较大的数字,小数部分没有那么多尾数位,但是您没有指定使用哪种浮动数据类型,如果32/64/80/128/256位或更多,那么很难说,如果整数部分更大,那么您的整数数据类型用于切断非小数部分,那么您将遇到f-long(f)的麻烦。

p。

if语句可以通过在操作前后的符号位内外进行屏蔽来避免。例如,在标准32位浮点数上,它看起来像这样:

float f=4.561;         // input value
DWORD *dw=(DWORD*)(&f); // pointer to f as integer type to access bits
DWORD m;               // sign storage
m=(*dw)&0x80000000;    // store sign bit to m
(*dw)&= 0x7FFFFFFF;    // f=fabs(f)
f-=floor(f);
(*dw)|=m;              // restore original sign from m
// here f = 0.561   

如果没有DWORD,请使用无符号32位整数