2015-10-22 7 views
7

エリクシル指数を整数に変換するにはどうすればよいですか?指数表記のエリクシール数を整数に変換する

1.0e2のようなものを100に変換したいと思います。 私は解決策を探していましたが、見つけられませんでした。あなたは指数は時々も指数表記と呼ばれる、本当にscientific notationで書かれただけの浮動小数点数で呼び出す何

+3

あなたは 'TRUNC(数を)'使用することができ、それは整数に指数表記で数値を変換しますが判明します。 'trunc(1.0e2)=> 100' 注 - これは10進数を切り捨てるので、floatでは機能しません。 –

+0

'1.0e2'は浮動小数点です。 「100」は整数である。あなたはfloatからintに変換しようとしていますか? – jdl

答えて

6

。実際の指数は実際にはこの全体の一部です。一緒に、それは私たちが便利な、非常に大きな及び/または小さな数字を表現することができます仮数と:

mantissa * (10^exponent) 

のでエリクサーで、他の多くの言語のように、数1.23 * (10^5)1.23e5のように記述することができます。あなたがiexにあなたの例番号1.0e2を入力した場合、あなたはそれが浮動小数点数の上だけの利便性が本当にあることがわかります。

iex> 1.0e2 
100.0 

そこで質問は本当にする必要があります:「どのように私はfloat型に変換します整数?"。これに対する答えは、あなたがこれを達成するために、以下の機能のいずれかを使用することができるということです。

  • Kernel.round/1 - 小数点
  • Float.round/2後のドロップ桁 - - ラウンド
  • Kernel.trunc/1精度
  • Float.floor/2とラウンド - 精度で切り上げる
  • Float.ceil/2 - 精度を切り捨てます。

Kernelの機能はallowed in guard testsです。電話をかけるには、Kernel.を手前に置く必要はありません。 Float関数では、さらに、小数点以下の桁数を保持するために精度を指定することができます。あなたの例では、100.0は整数なので、どちらを使うかは問題ではありません。しかし、最善の異なる数で示されている上記の機能の動作は、1.55を言う:

iex> round(1.55) 
2 

iex> trunc(1.55) 
1 

iex> Float.round(1.55) 
2.0 

iex> Float.round(1.55, 1) 
1.6 

iex> Float.floor(1.55) 
1.0 

iex> Float.floor(1.55, 1) 
1.5 

iex> Float.ceil(1.55) 
2.0 

iex> Float.ceil(1.55, 1) 
1.6 
+1

徹底的な対応に感謝します! –

関連する問題