Tag: 浮点

如何使十进制的值仅以数字显示?

我试图使我的c程序运行任何你输入的值将作为文字出来,例如,如果我想输入值1234.56它应该出来“一千二百三十四美元……和56美分”注意分数只是用数字表示的。 到目前为止,我已经正确编写了能够将数字转换为单词的代码,但我不知道如何只留下单独的分数。 请帮忙!! 目前对于小数,我得到了一些负面的数字! 代码如下: #include void printNum(int); void printNum2(int); void printNum3(int); void printNum4(int); int main() { int a = 0; int b = 0; int c = 0; int d = 0, e=0; float inclusive; printf(“Welcome to the IPC144 Cheque Generator!!\n”); printf(“PAY TO THE ORDER OF… amahmood29 (018359133)\n”); printf(“Enter a monetary value from $0.01 […]

这个C成语是什么意思?

可能重复: John Carmack不寻常的快速反向平方根(Quake III) 我最近在博客上看到了这段代码 – 它来自Quake3引擎。 它意味着使用Newton-Rhapson方法快速计算逆平方根。 float InvSqrt (float x){ float xhalf = 0.5f*x; int i = *(int*)&x; i = 0x5f3759df – (i>>1); x = *(float*)&i; x = x*(1.5f – xhalf*x*x); return x; } 做int i = *(int*)&x;的原因是什么int i = *(int*)&x; ? 做int i = (int) x; 相反,给出了完全不同的结果。

ANSI C浮点计算不准确

人们如何处理ANSI C中的浮点不准确? 在这种情况下,预期结果为4.305,但ANSI C还会返回0.000001? #include main() { float _lcl1=66.3; float _ucl1=76; float lbl1 = 0; float ubl1 = 0; lbl1 = (_lcl1 – 2.5 * (_ucl1 – _lcl1)); printf (“%e\n”,lbl1); } 4.205001e+01 我的想法是,这必须是一个常见的问题,所以有一个标准的lib来处理这个或人们将这些转换为整数,进行计算,然后将它们转换回来? 有人能否对成功的“实践”策略提供一些见解?

将无穷大指定为浮动

我正在尝试将浮点数初始化为无穷大值,而不使用INFINITY宏。 float f[] = { 0b01111111100000000000000000000000, // 0x7f800000 0x7f800000 -1, 0x7f800000 -2, 0x7f800000 -64, 0x7f800000 -65 }; 印刷: 2139095040.000000 2139095040.000000 2139095040.000000 2139095040.000000 2139094912.000000 为什么不是第一个数据无穷大(如1 / 0.0 )而其他数据在最后一个数据之前不会改变? 0x7f7fffff应该是浮点数的最大值,并尝试0x7f80000被认为是无穷大。

printf函数如何处理%f规范?

我有几个程序,其输出我无法理解: 计划1 #include int main(void) { int i=1; float k=2; printf(“k is %f \n”,k); printf(“i is %f \n”,i); return 0; } 输出位于http://codepad.org/ZoYsP6dc k is 2.000000 i is 2.000000 计划2 再举一个例子 #include int main(void) { char i=’a’; int a=5; printf(“i is %d \n”,i); // here %d type cast char value in int printf(“a is %f \n”,a); […]

如何在c中没有`scanf()`的情况下得到整数和浮点输入?

如何在不使用scanf()情况下将用户给定的整数和浮点值赋给变量或数组? 就像我们有char和string getchar , fgetc , fgets …等,是否有浮点数和整数的函数?

在c / c ++中按位指定浮点常量值

这就是我想要做的: //Let Bin2Float be a magic macro that packages specified bit pattern into float as a constant const float MyInf = Bin2Float(01111111,10000000,00000000,00000000); 我们都知道如何将位模式打包成整数(“二进制常量”黑客),并且这个魔术原型宏的输入与相应的32位整数二进制常量宏的输入相同。 将位打包成整数常量不是问题。 但是,在使用指针和联合投注之后,我意识到将整数类型化为浮点数会导致许多问题(一些在MSVC方面,一些在gcc方面)。 所以这是需求列表: 必须在gcc(C模式),g ++,MSVC下编译(即使我必须使用条件编译来做两个单独的版本) 必须为C和C ++编译 在生成的汇编代码中,必须编译成硬编码常量,而不是动态计算 一定不要使用memcpy 不得使用静态或全局变量 不得使用基于指针的类型惩罚来避免严格别名问题

浮点常数

对于以下代码: #include int main() { float a = 0.7; printf(“%.10f %.10f\n”, 0.7f, a); return 0; } 我得到的输出是: 0.7000000000 0.6999999881 请解释为什么a打印为0.6999999881而文字常量打印为0.7000000000 ? 在这种情况下,使用浮点常数是否依赖于编译器?

printf如何处理float参数与处理double参数的方式完全相同?

直到最近,我才想到: printf(“%f”,x)将尝试从堆栈中读取4字节的浮点值。 printf(“%lf”,x)将尝试从堆栈中读取8字节的浮点值。 但是,下面的代码似乎产生了正确的输出: float f = 1234.5; double d = 12345678.9; printf(“Output = %u %u\n”,sizeof(f),sizeof(d)); // Output = 4 8 printf(“Output = %.1f %.1f\n”,f,d); // Output = 1234.5 12345678.9 我相信它certificateprintf(“%f”,x)从堆栈中读取一个8字节的浮点值。 这是因为两个值都正确打印,但12345678.9太大而无法放入4字节变量。 现在我的问题是:当使用4字节float变量调用printf时,编译器如何知道它应该在将其推入堆栈并调用printf之前将其转换为8字节的double值? 在调用带浮点参数的函数时,这是标准的一部分吗? 谢谢

计算函数并检查其域

我的任务是计算以下function: ∛日志5 (x 2 – √x) 对于论证x = [-5; 10],增量为0.2。 所以为了让x满足函数的域,我想我们必须针对2种情况进行测试: double myPow(double x, double y) { if (x < 0.0) return -pow(-x, y); else return pow(x, y); } //… for(double x = -5.0 ; x = 0.0 && (pow(x, 2.0) – sqrt(x)) > 0.0) { //myPow correctly calculates the cube root if x < […]