c语言-double 转 int 的问题

问题描述

double 转 int 的问题

程序如下:
#include

int main()
{
double f_temp = 1.001 * 10000;
int i_temp = f_temp;
printf("%f, %d
", f_temp, i_temp);
return 0;
}
为何编译运行输出:
10010.000000, 10009
编译器为:
g++ (Ubuntu 5.2.1-22ubuntu2) 5.2.1 20151010

解决方案

取整得到的是不大于这个浮点数的最大整数。但是浮点数在运算和转换为10进制的时候会有微小的误差。所以有时候会出现这种情况。

解决方案二:

java---double转int的问题
double转int精度丢失问题
double转int时精度不一致问题

时间: 2024-09-12 07:40:19

c语言-double 转 int 的问题的相关文章

c语言-关于double型和int型的问题,两种程序运行结果不同

问题描述 关于double型和int型的问题,两种程序运行结果不同 #includeint main(){ int i; double sumk=1; for(i=1sum=0;i<=1000;i++) { sum+=k/i; k*=-1; } printf(""%lfn""sum); return 0;} #includeint main(){ int ik=1; double sum; for(i=1sum=0;i<=1000;i++) { sum+

C语言double和float 实例分析_C 语言

小数也称实数或浮点数.例如,0.0.75.0.4.023.0.27.-937.198 都是合法的小数.这是常见的小数的表现形式,称为十进制形式. 除了十进制形式,也可以采用指数形式,例如 7.25×102.0.0368×105.100.22×10-2 等.任何小数都可以用指数形式来表示. C语言中的小数也有这两种表示形式.在书写时,十进制形式和数学中的一样,指数形式有所差异. 在C语言中小数的指数形式为: aEn 或 aen a 为尾数部分,是一个十进制数,n 为指数部分,是一个十进制整数,E或

stream-c++把double,int等数据类型直接写入文本文件,不要先变成字符串再写入,如何写?

问题描述 c++把double,int等数据类型直接写入文本文件,不要先变成字符串再写入,如何写? 比如0是int类型有4个字节就写4个字节,不要变成字符0再写入.还有必须能跨平台可运行于linux的. 我的代码这么写 int i1=2; ofstream output("./1.txt", ios::binary); output<<i1; 结果1.txt文件中保存字符2,我不是指定二进制方式ios::binary进行输出了吗?为什么还存放字符2呢??这样不行该怎么写呢?

c语言-C语言double t[3][3],(*pt)[3]=t则对t数组元素错误的引用是

问题描述 C语言double t[3][3],(*pt)[3]=t则对t数组元素错误的引用是 double t[3][3],(*pt)[3]=t则对t数组元素错误的引用是: A)*(pt+1)[2] B)*(pt[0]+1) C)t[0][2] D)(*(t))[2] ===参考答案为A,求详细解释 解决方案 A错误原因:*级别低于[],被解释为: ((pt+1)[2])相当于(*(pt+1+2))即pt[3][0],t[3][0],下标出界. 可改为:(*(pt+1))[2]相当于pt[1][

string,object,double to int的心得

看了许多文章,很多人使用Convert.ToInt32来强制转换,但发现当字符串值以小数,科学计数法表示时候无法转换.如果在ToInt32之前先将字符串转换为Detimal就不会有这种情况. public static int Do(string value) { if (string.IsNullOrEmpty(value)) return 0; decimal result = 0; decimal.TryParse(value, out result); return System.Con

C语言中判断int,long型等变量是否赋值的方法详解

当然,如果你不赋值给局部变量,这样会导致整个程序的崩溃,因为,它的内容被系统指向了垃圾内存.下面我们看一段代码: 复制代码 代码如下: #include <stdio.h> #include <string.h> #include <stdlib.h> int globle_value; int my_sum(int value1, int value2); long my_sub(long value1, long value2); int main(void) {

C语言中判断int,long型等变量是否赋值的方法详解_C 语言

当然,如果你不赋值给局部变量,这样会导致整个程序的崩溃,因为,它的内容被系统指向了垃圾内存.下面我们看一段代码: 复制代码 代码如下: #include <stdio.h>#include <string.h>#include <stdlib.h>int globle_value;int my_sum(int value1, int value2);long my_sub(long value1, long value2);int main(void){ int aut

C语言中交换int型变量的值及转换为字符数组的方法_C 语言

不使用其他变量交换两个整型的值: #include <stdio.h> void main(){ int a = 3; int b = 4; a = a ^ b;//使用异或交换 b = b ^ a; a = a ^ b; printf("%d, %d\n", a, b); a = a - b;//使用加减交换 b = a + b; a = b - a; printf("%d, %d\n", a, b); a ^= b ^= a ^= b; printf

c语言-scanf函数用%f读取double类型时,为什么会出现错误?

问题描述 scanf函数用%f读取double类型时,为什么会出现错误? 问题一: #include double power (double n,int p); int main (void) { double x,xpow; int exp; printf("Enter a number and the positive integer power"); printf("to which will be raised . enter q"); printf(&q