我有一个
float a = 1412.244019;
Run Code Online (Sandbox Code Playgroud)
我需要一个四舍五入到最接近的第二个小数,如1412.24000000.我明白,如果我想要只用两位小数来表示我使用%.2f,但事实并非如此.出于数学原因,我需要新的a作为浮点数.
我已经尝试了在stackoverflow上找到的几个没有运气的方法.我使用的更明显,我在下面提到,但仍然没有运气使用它.你能明白为什么魔法没有发生吗?
PS:它确实有时会产生预期的效果,而不是总能让我思考......嗯......
提前致谢.
码:
float a = 1412.244019;
NSLog(@"a is %f", a); //output a is 1412.244019
a = [[NSString stringWithFormat:@"%.2f", a] floatValue];
NSLog(@"a is %f", a); //output a is 1412.239990
Run Code Online (Sandbox Code Playgroud)
编辑:
看起来就像我在上述手术后使用浮子一样,它正在考虑它是1412.240000,尽管NSLog说的不同......奇怪.但我得到了我想要的东西,所以感谢浪费时间追逐任何东西:)
编辑我很乐意选择你们所有人作为正确的答案,但由于我只能选择一个,我选择了第一个好的答案,并附加了解释(最后两个).
为什么当我将SQL Server中的40.54的值保存到Real类型的列时,它会返回给我一个更像40.53999878999而不是40.54的值?我已经看过几次,但从来没有弄明白为什么会发生这种情况.有没有其他人遇到过这个问题,如果是这样的话?
我正在尝试使用打印一些浮点数printf.例如:
int main()
{
printf("%.1f",76.75);
return 0;
}
Run Code Online (Sandbox Code Playgroud)
输出:76.8
我对结果有一些疑问.
首先,为什么不打印76.7?
第二,它是如何围绕这个数字的呢?
有人可以解释一下如何用C函数选择浮点精度吗?
例子:
theFatFunction(0.666666666, 3) 返回0.667
theFatFunction(0.111111111, 3) 返回0.111
让我知道如何在Objective-C中将2位小数舍入为十进制.
我想这样做.(句子后面的所有数字都是浮点值)
•圆形
10.118 => 10.12
10.114 => 10.11
•ceil
10.118 => 10.12
•地板
10.114 => 10.11
谢谢你查看我的问题.
我们如何在iphone中将十进制数舍入为2位?
例如 ,
5345 - > 53
570 - > 57
89523 - > 90
我尝试使用nsformatter,这是我使用的代码,
NSNumberFormatter *formatter = [[NSNumberFormatter alloc] init];
[formatter setNumberStyle:NSNumberFormatterDecimalStyle];
[formatter setMaximumIntegerDigits:2];
[formatter setRoundingMode: NSNumberFormatterRoundUp];
NSString *numberString = [formatter stringFromNumber:[NSNumber numberWithInt:570]];
[formatter release];
NSLog(@"%@",numberstring);
Run Code Online (Sandbox Code Playgroud)
即使将舍入模式更改为不同的选项后,我仍然将值设置为70.请在这件事上给予我帮助
谢谢,维诺德.
通常,舍入到小数点后2位非常容易
printf("%.2lf",<variable>);
Run Code Online (Sandbox Code Playgroud)
但是,舍入系统通常会舍入到最近的偶数.例如,
2.554 -> 2.55
2.555 -> 2.56
2.565 -> 2.56
2.566 -> 2.57
Run Code Online (Sandbox Code Playgroud)
而我想要实现的是
2.555 -> 2.56
2.565 -> 2.57
Run Code Online (Sandbox Code Playgroud)
事实上,四舍五入在C中是可行的,但仅对于整数;
int a = (int)(b+0.5)
Run Code Online (Sandbox Code Playgroud)
所以,我要问的是如何在正值上用2位小数而不是Integer做同样的事情来实现我之前说的打印.
可能重复:
C中的舍入数字为2个小数位数
我目前正在linux机器上学习c ++.我有相应的四舍五入或相应的代码,但只有整数.如何将此代码更改为舍入到百分位或任何其他小数?我不会问我是不是已经尝试到处寻找:(而且一些答案似乎有很多线条似乎是一个简单的功能!
double round( double ){
return floor(value + 0.5 );
}
Run Code Online (Sandbox Code Playgroud) 我有一个API调用,它返回一个double。双精度数的十进制长度可以从很多小数位到几个小数位不等(全部归结为执行器的状态)。此双精度表示执行器范围半径上的当前位置。我对这样的详细数字不感兴趣,因为它会给系统增加很多噪音。我一直在使用浮点数来节省空间,但仍然有6-8十进制长度的浮点数。我对地板或天花板不感兴趣,只是因为它不能完成我想要的工作。例如,我有数字:
-2.05176
-0.104545
0.30643
0.140237
1.41205
-0.176715
0.559462
0.364928
Run Code Online (Sandbox Code Playgroud)
无论如何,我都希望将精度设置为2个小数位。我不是在谈论std :: cout的输出精度,我知道如何设置它。我说的是浮子的实际精度。即:我对浮点数感兴趣,这些浮点数将具有0.XX格式和0.XX00000000000的实际精度。因此,将上面的列表转换为:
-2.05
-0.10
0.30
0.14
1.41
-0.17
0.55
0.36
Run Code Online (Sandbox Code Playgroud)
我知道boost有一个数值转换模板,但是我不知道如何使用较低的精度从float转换为float。有人可以帮忙吗?
c ×3
c++ ×3
rounding ×3
ios ×2
objective-c ×2
boost ×1
decimal ×1
iphone ×1
nsformatter ×1
precision ×1
printf ×1
sql-server ×1
types ×1