-4

由于某些原因,我需要将 Double Value 的 Integer 和 Fraction 部分作为两个单独的整数。

例如:值 12.34 拆分为整数 12 和 34。

根据我的数学基础知识,这可以通过我现在使用的这个表达式轻松完成:

double aValue = 2.4f;
int aInt = (int)aValue;    
int aFract = (int)((aValue - aInt) * 100.0f ); 

到目前为止它有效,但它有奇怪的输出行为。

例如,传递 2.30000 会得到 '2' 和 '29' 而不是 '2' 和 '30'。

如果我将 aInt 和 aFract 声明为 Double,则处理结果会正确地产生“2.0000”和“30.0000”,但将“30.0000”转换为整数会再次“有趣地”产生“29”。

4

2 回答 2

1

如果您要转换一些(小于 100 左右的小数)而不是在循环内,那么转换为字符串会更准确,您不会陷入不准确

会是这样的

double aValue = 2.3;
NSString *str = [NSString stringWithFormat:@"%f", aValue];
NSArray *arr = [str componentsSeparatedByString:@"."];

现在 arr 包含 2 和 3 请记住,一个好的程序员是一个懒惰的程序员

于 2012-06-03T20:25:16.680 回答
-2

您在数字表示方面遇到了不准确的情况。截断前加 0.125 左右。

于 2012-06-03T20:20:35.073 回答