2015-05-12 64 views
0

我有一个浮点数,我们想截断小数部分,但不确定最简单的方法来做到这一点。只是拿起斯威夫特,大部分的想法似乎太涉及。目前我有:如何截断浮点数到一个int或不小数位

details.details.append((titles[2], "\(averageAnnualSolarProduction) kW")) 

但这是给了我一小部分,我想要删除。

+0

什么是“细节”?什么是'details.details'?我假设'averageAnnualSolarProduction'是一个'Float',但是你希望字符串不包含小数部分? – nhgrif

+0

正是它是一个浮动。不确定细节。细节是诚实的。只需要为其他开发者修复这个问题。 – timpone

+0

你想让它圆整还是小数点? – nhgrif

回答

2

我们需要两件事情结合起来:

  1. Stringformat:初始
  2. floor操作,这将确保我们的十进制数不围捕。

如果我们想保持这些操作在网上,我们想要的东西,看起来像这样:

details.details.append((titles[2], String(format: "%.0f kW", floor(averageAnnualSolarProduction)))) 

但是,这是一个很大的括号。看起来好一点,如果我们对此有点不安。

let solarProduction = String(format: "%.0f kW", floor(averageAnnualSolarProduction)) 
details.details.append((titles[2], solarProduction)) 

为了清楚这里,floor接受一些像3.89和返回比传递在更小的最大整数,所以它会回到这里3.0

为了确保我们不打印.0,我们使用Stringformat:初始值设定项,它采用格式字符串和参数。这与格式化字符串至少工作起来一样有效。%f指定我们的参数是浮点数,并且.0指定我们将在小数点后显示零数字。

如果我们用围捕发现,我们可以调用下降到floor和简单地使用format:初始化,但对于3.89值,这会给我们一个字符串,它看起来像"4 kW"

相关问题