因为在MS Access(是的,yikes!),Java和SQLite之间的各种浮动风格之间进行转换时充满了挫败感,所以我想将实数存储为int在SQLite中。是实现此目的的首选方式,如下所示(伪代码):

//real r = 36.57
string realAsStr = r.ToString();
// realAsStr is now "36.57"
// strip out the decimal point so that realAsStr becomes "3657"
int strAsInt = (integer)realAsStr; // strAsInt is 3657


...或者像这样:

int realAsInt = r * 100; // r * 100 is 3657.0[0]; realAsInt = 3657


...或其他类似的东西?

注意:这些在MS Access中存储为实类型的值是货币值,存储为双精度值。

最佳答案

只需将实数值乘以10 ^ x,其中x是逗号后的相关位数。
然后四舍五入或截断,并分配给int。

例:

假设逗号后的3位数字与您的应用有关:

double doubleVal = 127.123;
int intVal = (int) doubleVal * 1E3; // 1E3 = 1* 10^3 = 1000.0;
// intVal now is 127123


读回时只需除以10 ^ x:

intVal = 127123; // from DB
double val = intVal / 1E3;


// val现在127.123;

08-28 09:38