Tag: double

清除尾随0的双倍?

我有一个双倍,它有一个像0.50000的值,但我只想0.5 – 有没有办法摆脱那些尾随0? 🙂

什么是第一个双倍偏离相应的长三角?

我想知道从0d向上的第一个双重偏离“相同值”的长度偏离一些增量,比如1e-8。 我虽然失败了。 我试图在C中做这个,虽然我通常使用托管语言,以防万一。 请帮忙。 #include #include #define DELTA 1e-8 int main() { double d = 0; // checked, the literal is fine long i; for (i = 0L; i DELTA || di < -DELTA) { printf("%f", d); break; } } } 我猜测问题是di将我加倍并且因此d == i然后差异总是为0.我还能如何正确地检测到这一点 – 我更喜欢有趣的C铸造而不是比较字符串,这会永远。 答案 :完全符合我们的预期。 根据标准C / UNIX / POSIX工具,2 ^ 53 […]

将double值转换为C中的char数组

如何在C中将double值转换为char数组? double a=2.132; char arr[8]; 有没有办法在标准C中这样做? 谁能提供任何解决方案?

将字符串转换为C中的双变量

我编写了以下代码….它应该将像“88”这样的字符串转换为double值88并打印出来 void convertType(char* value) { int i = 0; char ch; double ret = 0; while((ch = value[i] )!= ‘\0’) { ret = ret*10 +(ch – ‘0’); ++i; } printf(“%d”,ret);//or %f..what is the control string for double? } //input string :88 但它总是打印0 …但是当我将ret的类型更改为int …它工作正常…当类型为float或double时,它打印为零…所以为什么我得到这个模棱两可的结果?

如何隐藏printf中的前导零

以下输出0.23 。 如何让它简单输出.23 ? printf( “%8.2f” , .23 );

Scanf / Printf双变量C.

假设我在C中有以下代码: double var; scanf(“%lf”, &var); printf(“%lf”, var); printf(“%f”, var); 它从stdin变量’var’读取,然后在stdout’var’中打印两次。 我理解你是如何从stdin读取双变量的,但我的问题是: 为什么你可以用%lf打印双倍? 为什么你可以用%f打印双倍? 使用哪一种更好更正确?

printf双打的舍入行为

有人可以解释这种行为吗? 我很清楚浮点数的机器级表示。 这似乎与printf及其格式有关。 两个数字都用浮点表示法精确表示(检查:乘以64得到一个整数)。 #include #include using namespace std; int main() { double x1=108.765625; printf(“%34.30f\n”, x1); printf(“%9.5f\n”, x1); printf(“%34.30f\n”, x1*64); double x2=108.046875; printf(“%34.30lf\n”, x2); printf(“%9.5f\n”, x2); printf(“%34.30f\n”, x2*64); } 输出: > 108.765625000000000000000000000000 > 108.76562 > 6961.000000000000000000000000000000 > 108.046875000000000000000000000000 > 108.04688 > 6915.000000000000000000000000000000 请注意,第一个数字向下舍入,第二个数字向上舍入。