私はこのようなnumeric
を持っています:
_a <- -1.542045
_
そして、それらを小数点以下2桁に切り下げ(またはabs
を切り上げ)たいと思います。 signif(a,3)
はそれを切り捨てて結果として1.54を返しますが、この例の場合、必要な結果は_-1.55
_です。
何か案が?
あなたはfloor(a * 100) / 100
を探していると思います。
クイックテスト
_a <- c(-1.542045, 1.542045)
floor(a * 100) / 100
# [1] -1.55 1.54
_
7時間前に質問を変更しました。次に、私の答えはあなたが望んでいることを正確に行っていません(私は「切り捨て」によって常に_-Inf
_に丸めたいと思っているので)。しかし、私はこれを私の回答の最初のバージョンで議論しました。次に、関連するものをここにコピーします。
sign(a) * ceiling(abs(a) * 100) / 100
を使用すると、正の値の場合はInf
に、負の値の場合は_-Inf
_にデータを丸めることができます。sign(a) * floor(abs(a) * 100) / 100
では、正と負の両方の値を0に丸めます。簡単なテスト
_a <- c(-1.542045, 1.542045)
sign(a) * ceiling(abs(a) * 100) / 100
# [1] -1.55 1.55
sign(a) * floor(abs(a) * 100) / 100
# [1] -1.54 1.54
_
あなたは問題を誤解しています。値が-1.542045の場合、常にそうです。
これでprint小数点以下2桁にしたり、小数点以下2桁の文字を取得したりできます。
> print(a, digits=3)
[1] -1.54
> format(a, digits=3)
[1] "-1.54"
>
本当に新しいものを作成したいrepresentationできること:
> b <- trunc(a*1e2)*1e-2
> b
[1] -1.54
>
好ましい方法は
> b <- round(a, digits=2)
> b
[1] -1.54
>
ceiling()
、abs()
、およびsign()
の組み合わせを使用して、その符号に関係なく、数値のabsを切り上げることができます。 2つの10進数でのこのような丸めは、次のようにして取得できます。
ceiling(abs(a)*100)/100*sign(a)
例:
a <- c(-1.542045, 1.542045)
ceiling(abs(a)*100)/100*sign(a)
#[1] -1.55 1.55