0

简单的问题,但我似乎无法找到答案。例如,如果我试图显示电池电压,那么小数点后几位的差异可能非常重要。如果我有这个:

stringFromNumber(voltage) + 'V'

电压为12.4,输出12V。这不好。我可以很容易地通过编辑生成的 StyleKit 来解决这个问题,但是每次我做出改变时都必须这样做,这将是一个真正的痛苦。有没有人有办法解决吗?

我正在使用 C# 输出,但 C# 和 Objective-C 都存在问题。

相关代码:

在 PaintCode 我有一个电压字符串表达式,stringFromNumber(voltage) + 'V' 它生成:

private void DrawGuage(float voltage) {  
    ...  
    var voltageString = new NSString(Math.Round(voltage).ToString()) + "V";
    ...

我希望 PaintCode 生成相同的,但没有Math.round.

4

2 回答 2

0

我找到了一个方法。这有点混乱,但它有效。

stringFromNumber(floor(voltage)) + (
        frac(voltage) != 0 ? '.'+stringFromNumber(frac(voltage)*10) : ''
) + 'V'

另外,我联系了 PaintCode 支持,他们说他们会考虑在未来的版本中添加更好的方法,但有一个类似于我的临时修复:

stringFromNumber(round(number)) + "." + stringFromNumber(round(number * 100 % 100))
于 2014-06-19T08:26:52.233 回答
0

提到的 PaintCode 答案不是 100%。如果你有一个 x.5 的值,它将被舍入到 x+1,然后得到附加的 0.5,所以你将得到 1.5 而不是 0.5,或者你会得到 11.7 而不是 10.7。所以你必须减去 1 你的十进制数是 0.5 或更高。

所以我玩过一些数学函数和 PaintCode。如果数字相同或高于 0.5,我使用的表达式用于使用布尔值,如果是这样,它将减去支配者的 1 个数字。这是我在 PaintCode 中用作表达式值的函数。

(round(number * 100 % 100) < 50)?(stringFromNumber(round(number)) + "." + stringFromNumber(round(number * 100 % 100))):(stringFromNumber(round(number)-1) + "." + stringFromNumber(round(number * 100 % 100)))
于 2016-01-05T12:28:50.770 回答