python怎么float转成int
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了python怎么float转成int相关的知识,希望对你有一定的参考价值。
python中float转成int可使用int()方法强制转换,具体步骤如下(在pycharm中演示):
1、首先定义一个float型数字"floatnum",值为3.55,如下图所示:
2、然后使用int(floatnum)方法将float类型强制转化成int,并将int(floatnum)的结果赋值给intnum,代码为intnum = int(floatnum),如下图:
3、在程序中输入print intnum,type(intnum)来确认intnum的输出值和输出类型如图:
4、按ctrl+shift+F10运行程序输出结果,从打印结果可以看出,看出intnum的值是3,类型是int,float型已经去零取整转化成int型。
参考技术A 数值从 float 转为 int, 将取整数部分而忽略小数部分。 参考技术B 明日歌(文嘉) 参考技术C >>> int(1.5)1
char *怎样转成int
例如:char * data = "3210";
转化后的int值 是0x1032的十进制值。求指导
char*怎样无法转成int,int可以转成char*。
1.首先,在python命令窗口中键入int(12,2)。结果是一个错误。
2.改为24589。
3.将int()方法中的第一个参数字符串的数量更改为0和1。
4.如果希望将字符串转换为八进制数,请使用int()方法并传递第二个参数8。
5.将字符串值转换为decimal,将第二个参数传递给2,并返回相同的结果。
6.如果希望将字符串中的值转换为十六进制,并且字符串中的值不能超过常值。
参考技术A char *转int也就是字符串转换为整数,这个是一个挺常用的功能了
对于十进制数,直接用atoi或者linux下支持的stringtoul一类的就可以
比如你说的"3210"用这类函数,就可以直接转成10进制的3210
不过,按照你说的3210转换成16进制的0x1032这个就不能算是常规转换了,转成同值16进制不说,高低位也反过来了
这个就比较麻烦,需要自己写转换函数
具体的方法,需要看你的转换规则
基本思路都是一样的
逐位读取字符串中的字符,并转换成对应16进制字符,比如'3'->0x3 'A'-> 0xa 'a'->0xa
等等
得到这些字符后,按照你需要的顺序,重排。 用移位(>> <<)加位或(|)操作可以做到
由于无法判断具体的转换规则 没办法给出通用的代码
对于"3210"->0x1032可以给一个参考例子
char *data = "3210";
int result = 0;
int j;
char buffer[5];
strcpy(buffer, data);//data是常量字符串,无法改变值,放到buffer里操作
for(j = 0; j <4; j ++)
if(buffer[j] <= '9' && buffer[j] >= '0')
buffer[j] -= '0';
else if(buffer[j] <= 'F' && buffer[j] >= 'A')
buffer[j] -= 'A'-0xa;
else if(buffer[j] <= 'f' && buffer[j] >= 'a')
buffer[j] -= 'a'-0xa;
else printf("unknow char %c\n", buffer[j]);
result = (buffer[2]<<12)|(buffer[3]<<8)|(buffer[0]<<4)|buffer[1];
printf("result is 0x%4x\n", (unsigned)result);
供参考 望有帮助本回答被提问者采纳 参考技术B 你是强制转换吗?
0x1032是16进制啊,10进制的数据总么会有0x呢?
如果你是进行的强制转换,那结果一定是错的,因为字符和整数进行转换都是按ASCII编码进行转换的。ASCII中只有单个字符的编码,字符串要被转换为整型都需要单个单个的进行转换。
但很多时候,我们要将一个数字型的字符串转换为相对应的整型数据,这要总么转呢。强制转换一定是不行的,因为强制转换按内存模型来匹配的,只是将一个数据的内存套到要转换的数据内存中。
这时候我们就要用相应的算法来处理,至于这个算法有很多,由于本人水平有限,还是不给你现丑了,这里我告诉你几个库函数,这些库函数在stdlib.h头文件中
1. float atof(const char *str);:字符串转浮点型函数,即将一个"123.12"转换为float类型的123.12
2. int atoi(const char *str); 字符串转整型函数
3. long atol(const char *str); 字符串转长整型函数
这里给你一个示例吧:
#include <stdio.h>
#include <stdlib.h>
int main(void)
char *str="12345.67";
long result;
result=atol(str);
printf("string=%s\nlong =%ld\n",str,result);
getch();
return 0;
//这个示例是将一个char *str="12345.67";类型的数据转换为对应的浮点类型数据追问
那个0x1032中的0x我只是说明是十六进制,是不是没有这样转换的函数?
追答10进制转为16进制有什么难的呢?网上有大量进制转换函数代码,随便找一个加进去就可以了。如果只是要在输出时转换为16进制,库中有很多格式化输出函数,printf就可以进行格式转换输出。
另外进制是可以进行隐式的转换的,看下图(是用C++的代码)
//由此可以见你只要将这个数以16进制赋给一个整型变量,系统可以自动转换为一个10进制的数。
主要使用atoi函数,具体如下:
为验证x确实是整型,还计算了1234567+1=1234568,具体如上!
参考技术D #include <stdio.h>#include <stdlib.h>
#include <string.h>
#include <math.h>
int main()
char * data = "3210";
int int_data[4];
int hex_data;
int length;
char *c;
c = data;
int i;
length = strlen(data);
if(length!=4)
printf("the string must be four\n");
exit(0);
for(i = 0;i < length;i++)
int_data[i] = int(*c -'0');
c++;
printf("%d\n",int_data[i]);
hex_data = int_data[2] *pow(16.0,3) + int_data[3]*pow(16.0,2) + int_data[0] *pow(16.0,1)+ int_data[1];
printf("0x%x ====%d(10)\n",hex_data,hex_data);
return 0;
以上是关于python怎么float转成int的主要内容,如果未能解决你的问题,请参考以下文章