我已经读过双精度和单精度之间的区别.然而,在大多数情况下,float和double,似乎可以用一个可以互换的,即或其他的似乎不影响使用效果.这是真的吗?浮动和双打什么时候可以互换?它们之间有什么区别?
我有以下代码.我想这样,如果price_result等于一个整数,让我们说10,那么我想添加两个小数位.所以10将是10.00.或者,如果它等于10.6将是10.60.不知道该怎么做.
price_result = parseFloat(test_var.split('$')[1].slice(0,-1));
Run Code Online (Sandbox Code Playgroud) 我知道因UIKit使用CGFloat分辨率独立坐标系而使用.
但我想,以检查是否例如每次frame.origin.x是0它让我感到恶心:
if (theView.frame.origin.x == 0) {
// do important operation
}
Run Code Online (Sandbox Code Playgroud)
是不是CGFloat有比较时容易误报==,<=,>=,<,>?这是一个浮点,他们有不寻常的问题:0.0000000000041例如.
Objective-C在比较时是在内部处理这个,还是可能发生origin.x读取为零的情况并不是0真实的?
randrange(start, stop)只接受整数参数.那么如何在两个浮点值之间得到一个随机数?
我使用以下行将float转换为int,但它并不像我想的那样准确:
float a=8.61f;
int b;
b=(int)a;
Run Code Online (Sandbox Code Playgroud)
结果是:( 8应该是9)
什么时候a = -7.65f,结果是:( -7应该是-8)
最好的方法是什么?
所以我已经得到了我最后一个问题的答案(我不知道为什么我没有想到这一点).当我没想到它的时候,我正在打印一个圆润的double使用cout.如何使用全精度cout打印double?
我一直看到这个常量弹出各种图形头文件
0.0039215689
Run Code Online (Sandbox Code Playgroud)
它似乎与颜色有关吗?
void RDP_G_SETFOGCOLOR(void)
{
Gfx.FogColor.R = _SHIFTR(w1, 24, 8) * 0.0039215689f;
Gfx.FogColor.G = _SHIFTR(w1, 16, 8) * 0.0039215689f;
Gfx.FogColor.B = _SHIFTR(w1, 8, 8) * 0.0039215689f;
Gfx.FogColor.A = _SHIFTR(w1, 0, 8) * 0.0039215689f;
}
void RDP_G_SETBLENDCOLOR(void)
{
Gfx.BlendColor.R = _SHIFTR(w1, 24, 8) * 0.0039215689f;
Gfx.BlendColor.G = _SHIFTR(w1, 16, 8) * 0.0039215689f;
Gfx.BlendColor.B = _SHIFTR(w1, 8, 8) * 0.0039215689f;
Gfx.BlendColor.A = _SHIFTR(w1, 0, 8) * 0.0039215689f;
if(OpenGL.Ext_FragmentProgram && (System.Options & BRDP_COMBINER)) {
glProgramEnvParameter4fARB(GL_FRAGMENT_PROGRAM_ARB, 2, Gfx.BlendColor.R, …Run Code Online (Sandbox Code Playgroud) 众所周知,NaNs在算术中传播,但我找不到任何演示,所以我写了一个小测试:
#include <limits>
#include <cstdio>
int main(int argc, char* argv[]) {
float qNaN = std::numeric_limits<float>::quiet_NaN();
float neg = -qNaN;
float sub1 = 6.0f - qNaN;
float sub2 = qNaN - 6.0f;
float sub3 = qNaN - qNaN;
float add1 = 6.0f + qNaN;
float add2 = qNaN + qNaN;
float div1 = 6.0f / qNaN;
float div2 = qNaN / 6.0f;
float div3 = qNaN / qNaN;
float mul1 = 6.0f * qNaN;
float mul2 = qNaN * qNaN;
printf( …Run Code Online (Sandbox Code Playgroud) 我有值25.00的float,但是当我打印在屏幕上它25.0000000.
如何只用两位小数显示值?
为什么更改总和顺序会返回不同的结果?
23.53 + 5.88 + 17.64 = 47.05
23.53 + 17.64 + 5.88 = 47.050000000000004
双方的Java和JavaScript的返回相同的结果.
我理解,由于浮点数用二进制表示的方式,一些有理数(如1/3 - 0.333333 ......)无法精确表示.
为什么简单地改变元素的顺序会影响结果?
floating-point ×10
c ×4
c++ ×3
java ×2
javascript ×2
objective-c ×2
precision ×2
constants ×1
cout ×1
formatting ×1
icc ×1
ieee-754 ×1
int ×1
ios ×1
iostream ×1
python ×1
random ×1