有人可以帮助一个菜鸟吗?如果我有一个从公式派生的数字4.561
,我怎么才能显示.561
并忽略4
?
提前致谢。我是编程新手,这是作业的一部分。任何帮助将不胜感激。我在c++
编码。
答案 0 :(得分:1)
不确定这是否是你需要的,但要检查一下。
float f = 4.561;
f = f-(long)f;
cout << "Value of f is : " << f << endl;
答案 1 :(得分:1)
使用moment.js
中的floor
:
math.h
出于以下原因:
由于您无法控制转换为整数类型(f = 4.561
if (f>=0) f=f-floor(f);
else f=f-ceil(f);
// here f = 0.561
),至少我不知道它是否明确定义为使用整数部分或舍入的标准。更不用说自定义类型的实现。
如果您的浮动值保持较大的数字然后您的整数类型可以容纳怎么办?我知道对于较大的数字,没有那么多的尾数位用于小数部分,但是如果32/64/80/128/256位或者更多如此难以说明并且如果是整数部分,则没有指定使用哪种浮动数据类型比用于切断非小数部分的积分数据类型大,那么你会遇到f-long(f)
的问题。
<强> PS。强>
可以通过在操作之前和之后屏蔽进出符号位来避免if语句。例如,在标准的32位浮点数上,它看起来像这样:
f-long(f)
如果你没有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
使用任何无符号的32位整数