当前位置: 首页 > 面试题库 >

Swift-如果小数等于0,如何从浮点数中删除小数?

林弘文
2023-03-14
问题内容

我正在显示一个带小数点的距离,如果它等于0(例如:1200.0Km),我想删除此小数点,如何迅速做到这一点?我正在显示此数字,如下所示:

let distanceFloat: Float = (currentUser.distance! as NSString).floatValue
distanceLabel.text = String(format: "%.1f", distanceFloat) + "Km"

问题答案:

迅捷3/4:

var distanceFloat1: Float = 5.0
var distanceFloat2: Float = 5.540
var distanceFloat3: Float = 5.03

extension Float {
    var clean: String {
       return self.truncatingRemainder(dividingBy: 1) == 0 ? String(format: "%.0f", self) : String(self)
    }
}

print("Value \(distanceFloat1.clean)") // 5
print("Value \(distanceFloat2.clean)") // 5.54
print("Value \(distanceFloat3.clean)") // 5.03

斯威夫特2(原始答案)

let distanceFloat: Float = (currentUser.distance! as NSString).floatValue
distanceLabel.text = String(format: distanceFloat == floor(distanceFloat) ? “%.0f" : "%.1f", distanceFloat) + "Km"

或作为扩展:

extension Float {
    var clean: String {
        return self % 1 == 0 ? String(format: "%.0f", self) : String(self)
    }
}


 类似资料:
  • 问题内容: 我正在寻找一种将数字转换为字符串格式的方式,删除任何多余的“ .0” 输入数据是浮点数和字符串的混合。所需的输出: 0->‘0’ 0.0->‘0’ 0.1->‘0.1’ 1.0->‘1’ 我想出了以下生成器表达式,但是我想知道是否有更快的方法: 进行真值检查可防止0变成空字符串。 编辑:我现在或多或少可以接受的解决方案是这样的: 似乎没有一种优雅的方法可以在python中处理这种(相当

  • 问题内容: 我有除法运算的结果,但我希望舍弃所得数字的小数部分。 我怎样才能做到这一点? 问题答案: 你可以用… …取决于您要删除小数的方式。 目前尚不支持所有平台(即IE),但与此同时,您可以轻松使用polyfill。 用出色的平台支持截断小数部分的另一种方法是使用按位运算符。在数字上使用按位运算符的副作用是它将操作数视为有符号的32位整数,因此删除了小数部分。请记住,这还会破坏大于32位的数字

  • 问题内容: 我想删除十进制数字中的前导零。 所以我想输出应该是 没有 。我尝试过不工作,我也尝试过正则表达式!没有结果!是的,我正在使用BigDecimal。 问题答案: 试试这个

  • my我希望它只显示。我该怎么做?这就是我尝试过的- 但这只是四舍五入到2位。我希望删除小数之后的所有内容。包括小数。

  • 每当我尝试删除java中即时数据类型的小数点时,就会出现这个错误。 这是我尝试用于转换的代码行。我正在使用字符串。总体安排 如果没有字符串格式,我会得到类似于24.00000的内容 我不想看到24后的小数点,你认为怎么样最好,可以处理? 我的dto有 我的dto正在返回一个,我非常确定。我想只显示分钟并在电子邮件中将分钟发送给用户。我不想要带有小数点的默认表示。

  • 我对编程很陌生,在大学里我们学习了不同类型的数字(整数、短数、浮数、双数)。Float和double是浮点数。通常,它们由一个符号+/-、一个尾数和一个指数组成。每个部分占用一定数量的比特。一个浮动最多可以显示小数点后7位,最多可以双倍显示16位。其公式是: 23·log10(2)=23·(log(2)/log(10))≈23·0.3≈7(浮点数小数点后) 52·0.3≈16(双人小数点后) 我知