需要帮助格式化数字c++
Need help formatting numbers C++
谁能帮助一个新手?如果我有一个数字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
的原因如下:
由于您无法控制转换为整型(
f-long(f)
),至少我不知道它是否被明确定义为标准,它使用整数部分或四舍五入。如果你的浮点值比你的整型能容纳更大的数字怎么办?我知道对于较大的数字,小数部分没有那么多尾数位,但是您没有指定使用哪种浮动数据类型,如果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位整数
相关文章:
- 比较并显示使用最小值(a,b)和最大值(a、b)升序排列的4个数字
- 为什么随机数生成器不在void函数中随机化数字,而在main函数中随机化
- 检查输入是否不是整数或数字
- 如何(从固定列表中)选择一个数字序列,该序列将与目标数字相加
- 如何用数字处理log(0)
- 最高有效数字侧的第N位
- 如何获取一个数字的前3位
- 查找最接近的大于当前数字的数字的索引
- 找到两对数字,使它们的乘积的绝对差最小化
- 我想做一个彼此不同但重复出现的数字
- 将数字转换为字母(例如:123 转换为一二三)
- C++如何计算用户输入的数字中的偶数位数
- 如何在C++中确定文本文件中的元素是字符还是数字
- 打印数字图案
- C++问题:用户认为数字1-100,程序提出问题不超过6次即可得到答案。无法正确
- 如何检查一个c++字符串中有多少相同的字符/数字
- 求出有多少个数字是完美平方,而sqrt()是L,R范围内的素数
- 将数字打印成文字
- 当使用比格式支持的精度更高的精度来显示数字时,会写出什么数据
- 在将数字随机生成为数组期间从内存输出随机数的数组