从点后的浮点数中取值
Posted
技术标签:
【中文标题】从点后的浮点数中取值【英文标题】:Take value from float number after dot 【发布时间】:2015-12-01 15:03:57 【问题描述】:如何在浮点值中正确提取昏迷后的第二个值。
例子:
var value = 5.435
我想在昏迷之后取第二个值,即 3。
如何正确地做到这一点?
【问题讨论】:
【参考方案1】:如果您想同时处理正值和负值:
(Int)( abs(value) * 100 ) % 10
如果你想保留标志,只需删除abs
【讨论】:
Int
周围不需要括号。
你说得对,Int
周围的括号是不必要的。【参考方案2】:
也许是这个:(int)( value * 100 ) % 10
。
【讨论】:
【参考方案3】:如果它总是小数点后三位,我会这样做。
var value = 5.435
value *= 100
var digit = value % 10
【讨论】:
【参考方案4】:修改是一项昂贵的操作,而是这样做
(Int(value * 100)) - (Int(value * 10) * 10)
在你的场景中我们得到
(Int(5.435 * 100)) - (Int(5.435 * 10) * 10);
(Int(543.5)) - (Int(54.35) * 10);
(543) - (54 * 10);
(543) - (540);
3
【讨论】:
“Mod 是一项昂贵的操作” – 比多次乘法加上舍入到Int
更昂贵?你对这个事实有什么参考吗?
这是嵌入式系统的参考:embeddedgurus.com/stack-overflow/2011/02/… 它涉及减法和除法,除非编译器足够聪明,可以将除法转换为乘法,否则除法也很慢。我刚刚做了一个游乐场测试,循环10000次,mod大约需要2.8941秒,我的方法平均需要2.6752。以上是关于从点后的浮点数中取值的主要内容,如果未能解决你的问题,请参考以下文章