LoginSignup
1
2

More than 1 year has passed since last update.

TypeScript 0での割り算まとめ

Posted at

TypeScriptでの割り算をするときに、0で割った場合どうなるのかについて、実際に動かしてみた結果をまとめたいと思います。

参考サイト

-「サバイバルTypeScript - number型 (数値型)」
https://typescriptbook.jp/reference/values-types-variables/number

目次

 number型
 0で割るとどうなるのか
 Infinityで割り算
 NaNで割り算
 まとめ

number型

TypeScriptでは、数を扱うときにnumber型でアノテーション(型注釈)を行うことができます。
number型は大きく分けて以下に分類することができます。

名称 概要 詳細
数値リテラル 数値をそのまま利用 整数、小数、負数を表現
進数 2進数、8進数、16進数で表現 数値の前に0b(2進数)、0o(8進数)、0x(16進数)をつけて表現
NaN(Not-a-Number) 数値とならない値、非数を表す 数値として処理ができない場合等で発生 (例:"hoge" / 3)
Infinity 無限大を表す TypeScriptで表現できない値になった場合で発生(例:1 / 0)

0で割るとどうなるのか

sample1.ts
const oneByZero: number = 1 / 0
console.log(oneByZero) // Infinity
========
const zeroByZero: number = 0 / 0
console.log(zeroByZero) // NaN
========
const minusOneByZero: number = -1 / 0
console.log(minusOneByZero) // -Infinity
========
const string: any = "hoge"
const stringByZero: number = string / 0
console.log(stringByZero) // NaN
========
const InfinityByZero: number = Infinity / 0
console.log(InfinityByZero) // Infinity
========
const NaNByZero: number = NaN / 0
console.log(NaNByZero) // NaN
========
const minusInfinityByZero: number = -Infinity / 0
console.log(minusInfinityByZero) // -Infinity

結果は、以下の値が返ってきました。
1を0で割るとInfinity
0を0で割るとNaN
-1を0で割ると-Infinity
文字列を0で割るとNaN
Infinityを0で割るとInfinity
NaNを0で割るとNaN
-Infinityを0で割ると-Infinity

Infinityで割り算

sample2.ts
const oneByInfinity: number = 1 / Infinity
console.log(oneByInfinity) // 0
========
const zeroByInfinity: number = 0 / Infinity
console.log(zeroByInfinity) // 0
========
const minusOneByInfinity: number = -1 / Infinity
console.log(minusOneByInfinity) // -0
========
const string: any = "hoge"
const stringByInfinity: number = string / Infinity
console.log(stringByInfinity) // NaN
========
const NaNByInfinity: number = NaN / Infinity
console.log(NaNByInfinity) // NaN
========
const InfinityByInfinity: number = Infinity / Infinity
console.log(InfinityByInfinity) // NaN
========
const minusInfinityByInfinity: number = -Infinity / Infinity
console.log(minusInfinityByInfinity) // NaN

結果は、以下の値が返ってきました。
1をInfinityで割ると0
0をInfinityで割ると0
-1をInfinityで割ると-0
文字列をInfinityで割るとNaN
NaNをInfinityで割るとNaN
InfinityをInfinityで割るとNaN
-InfinityをInfinityで割るとNaN

NaNで割り算

sample3.ts
const oneByNaN: number = 1 / NaN
console.log(oneByNaN) // NaN
========
const zeroByNaN: number = 0 / NaN
console.log(zeroByNaN) // NaN
========
const minusOneByNaN: number = -1 / NaN
console.log(minusOneByNaN) // NaN
========
const string: any = "hoge"
const stringByNaN: number = string / NaN
console.log(stringByNaN) // NaN
========
const NaNByNaN: number = NaN / NaN
console.log(NaNByNaN) // NaN
========
const InfinityByNaN: number = Infinity / NaN
console.log(InfinityByNaN) // NaN
========
const minusInfinityByNaN: number = -Infinity / NaN
console.log(minusInfinityByNaN) // NaN

結果は、以下の値が返ってきました。
1をNaNで割るとNaN
0をNaNで割るとNaN
-1をNaNで割るとNaN
文字列をNaNで割るとNaN
NaNをNaNで割るとNaN
InfinityをNaNで割るとNaN
-InfinityをNaNで割るとNaN

まとめ

0で割ると返ってくる値に「Infinity」「NaN」「-Infinity」があることがわかりました。また、いずれの値もtypeofで確認するとnumberとなります。
判別するにはisNaN関数やisFinite関数があるようです。

1
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
2