Int64和int32不同位数类型计算注意点

Int64 id = 0;

int tmp = (int)readInt();---------》Int64 tmp = (Int64)readInt();

id = id + tmp * 256 * 256 * 256 * 256;

--->如果tmp是int类型,那么tmp * 256 * 256 * 256 * 256==0

-->必须改为Int64 tmp,这样才能正确计算出非0的实际值

Debug.Log("Entity id " + id);

时间: 2024-08-24 02:43:10

Int64和int32不同位数类型计算注意点的相关文章

将DataTable转换为List<T>对象遇到问题:类型“System.Int64”的对象无法转换为类型“System.Int32”。

可以利用反射将DataTable转换为List<T>对象:原始链接http://www.jb51.net/article/67386.htm 但是该方法在DataTable里某个字段类型是Int32会有问题,报异常:类型"System.Int64"的对象无法转换为类型"System.Int32". 可在赋值的时候加一句: if(pi.GetMethod.ReturnParameter.ParameterType.Name == "Int32&q

java浮点类型计算

java浮点类型需要采用java.math.*这个工具包,这样的计算结果才是我们想要的.呵呵 1 import java.math.BigDecimal; 2 import java.text.NumberFormat; 3 4 5 /** 6 * 数学计算类 7 * @author mingge 8 * 9 */ 10 public class ArithUtil { 11 12 private ArithUtil(){ 13 14 } 15 16 /** 17 * 浮点数加法 18 * @p

python中,数字类型计算

说明: 今天在看python数字类型的操作,在此记录下. 操作过程: 1.数字的加减乘除 >>> 2 + 24>>> 4 - 22>>> 2 - 4-2>>> 2 * 24>>> 2 / 2 #除法的结果会返回小数的结果,如果是整除,小数点后面就是01.0>>> 1 / 30.3333333333333333 #1除以3除不尽,小数点后面是无限循环.>>> 2 / 0Traceba

SQL Select 语句小数位数影响计算的准确率的问题

在财务数据计算中,特别是分摊过程中,0.0001% 和0.00012%看似极小的差异,但是会造成最后求和很大的差异,因此,我们在计算中需要尽可能多的保留占比的小数位数 可以在SELECT CONVERT(float,x) /CONVERT(float,y) as pct ...... 或者显示的指定精度解决,CONVERT(DECIMAL(38,12),x) /CONVERT(DECIMAL(38,12),y) as pct 两种方法都可解决 原文地址:https://www.cnblogs.c

java double类型计算出现的精度问题

 double d=100*1.005; 结果d的结果为100.49999999999999 怎么解决这种问题呢,用DecimalFormat,它对double类型的进行四舍五入处理用法如下: DecimalFormat df=new DecimalFormat(pattern): String nums=df.format(value): 这里给pattern:".00" value:100*1.005 nums值为:100.50

精度更高的double类型计算工具类(借助BigDecimal类型)

/** * 提供精確的加法運算 * @param args */ public static double add(double v1, double v2) { BigDecimal b1 = new BigDecimal(Double.toString(v1)); BigDecimal b2 = new BigDecimal(Double.toString(v2)); return b1.add(b2).doubleValue(); } /** * 提供了精確的減法運算 * * @param

编写程序:从键盘上接受一个三位数(首先要确保是三位数),计算出各位之和输出。

#include<stdio.h>int main(){    int a,sum=0;    printf("请输入一个三位数:\n");    scanf("%d",&a);    sum=a/100+a%100/10+a%10;    printf("这三个数的和:%d",sum);    return 0;} 来源:福州SEO 原文地址:https://www.cnblogs.com/1994july/p/120036

NHibernate之旅(16):探索NHibernate中使用存储过程(中)

本节内容 引入 实例分析 2.创建对象 3.更新对象 结语 引入 上一篇,怎么使用MyGeneration提供的模板创建存储过程和删除对象存储过程的使用,这篇接下来介绍在NHibernate中如何使用存储过程创建对象.更新对象整个详细过程,这些全是在实际运用中积累的经验,涉及使用的错误信息,如何修改存储过程,并且比较没有使用存储过程的不同点,并非官方比较权威的资料,所以敬请参考,这篇继续,如果你还没有来及看上一篇,那赶紧去看看吧. 实例分析 2.创建对象 Step1:为了比较,我们先执行Crea

【Go入门教程3】基本类型 和 高级类型

基本类型 Go 有很多预定义类型,这里简单地把它们分为 基本类型 和 高级类型.Go 的基本类型并不多,而且大部分都与整数相关,如下表所示: 名 称 宽度(字节) 零 值 说 明 bool 1 false 布尔类型,其值不为真即为假.真用常量 true 表示,假由常量 false 表示 byte 1 0 字节类型,它也可以看作是一个由 8 位二进制数表示的无符号整数类型 rune 4 0 rune 类型,它是有 Go 语言定义的特有的数据类型,专用于存储 Unicode 字符.它也可以看作一个由