iphone - ios 中的金额值截断

标签 iphone ios rounding

在我的应用程序中,我有一个金额字段。它应该只接受小数点前的 6 位数字和小数点后的任意数字,这些数字将四舍五入为 2 位数字。如何做到这一点?

例如,输入 12345678 可以在单击 RETURN 键时被截断为 123456。
同样的方法,
12345678.75 -> 123456
123456.456 -> 123456.46

最佳答案

此代码应该有所帮助。

double input = 12345678.75;
double output;
NSString *string = [NSString stringWithFormat:@"%lf", input];
int dotPosition = [string rangeOfString:@"."].location;
if(dotPosition == NSNotFound || dotPosition > 6)
{
    output = [string substringToIndex:6].doubleValue;
}
else
{
    output = round(input * 100) / 100;
}

根据 iPhoneDev 的评论更新:

代码的前一部分接受并返回 double 值。

这是处理字符串的代码:

NSString * input = @"123456.754";
NSString * output;
int dotPosition = [input rangeOfString:@"."].location;
if(dotPosition == NSNotFound || dotPosition > 6)
{
    output = [input substringToIndex:6];
}
else
{
    NSNumberFormatter *formatter = [[NSNumberFormatter alloc] init];
    formatter.decimalSeparator = @".";
    [formatter setRoundingMode: NSNumberFormatterRoundHalfUp];
    [formatter setMaximumFractionDigits:2];
    output = [formatter stringFromNumber:@(input.doubleValue)];
}

关于iphone - ios 中的金额值截断,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18865342/

相关文章:

iphone - 设置 ShinobiControls 条形图

ios - 具有单选和多选的 UITableView 部分

iOS:如何在弹出 UIViewController 的子 UIViewController 后将其返回 "Refresh"?

ios - 如何在ios swift中实时更新单元格内容时实时更新tableview单元格内容

Python - 按四分之一间隔舍入

jquery - Javascript ceil 具有 2 位小数而不是 1 位

iphone - 获取被触摸的按钮的标题

ios - 在另一个导航 Controller 上弹出导航 Controller

flutter - 如何在 flutter 中使用精度对整数进行舍入

iphone - 尝试将代码抽象到库中,但我的代码无法正常工作,我不知道为什么