티스토리 뷰
Infinity란?
Infinity는 double이나 float로 0 나눗셈을 실시했을 경우에, 그 결과로써 취득된다.
즉, Javascript에서는 ∞(무한)이라는 의미이다.
[ JavaScript ]
콘솔에서 Javascript에서의 Infinity의 취급은 stringify()와 parse에 따라서 다르다.
JSON.stringify(Infinity) // => "null"
JSON.parse("Infinity") // => 에러발생
- stringify() 예제 1
> JSON.stringify(Infinity);
"null"
> JSON.stringify(Number.POSITIVE_INFINITY);
"null"
> JSON.stringify(Number.NEGATIVE_INFINITY);
"null"
보통 Infinity를 그대로 사용하는 프로그램을 짜는 일은 없겠지만,
JavaScript로 0 나눗셈을 실시했을 경우에 결과로서 들어오므로 주의가 필요하다.
- stringify() 예제 2
> 128 / 0;
Infinity
즉 어떠한 계산 결과를 오브젝트의 변수에 등록할 때에 Infinity를 고려하지 않고,
그대로 JSON 문자열로 변환하면 null로 출력된다.
- stringify() 예제 3
JSON.stringify({"result": 128 / 0});
> "{"result":null}"
- parse() 예제
parse()는 크롬(chrome)브라우저의 console창에서 실행한 결과, 시스템 에러가 발생하는 것을 확인할 수 있다.
[ C# ]
C#에서 0으로 나누었을 경우, Exception e로 시스템 에러가 발생할 거라고 생각했다.
하지만 결과값을 저장하는 변수의 데이터형이 int형이나 long 등의 경우에는 시스템 에러가 발생하지만,
double이나 float의 경우에는 시스템 에러가 발생하지않는다.
- 예제 1 - Infinity라는 문자열이 저장되는 경우
try
{
double doubleResult = 2 / 0;
float floatResult = 2 / 0;
}
catch (Exception e)
{
throw e;
}
- 예제 1의 결과
doubleResult = "Infinity"
floatResult = "Infinity"
또한, Json.Parse()를 사용하여 확인해보면
JSON 문자열에서 double, float으로 되돌린 경우도 정상적으로 Infinity로 해석되었다.
Json.Parse(`doubleResult`)
// 결과 -> "doubleResult:Infinity"
Json.Parse(`FloatResult`)
// 결과 ->"floatResult:Infinity"
- 예제 2 - 시스템 에러가 발생하는 경우(int)
try
{
int intResult = 2 / 0;
}
catch (Exception e)
{
throw e;
}
- 예제 3 - 시스템 에러가 발생하는 경우(long)
try
{
long longResult = 2 / 0;
}
catch (Exception e)
{
throw e;
}
실제 오늘 프로젝트에서 인원수, 평균 건수를 계산하는 수식에서 분모가 되는 변수가 0이었을 경우,
계산 결과가 Infinity로 저장되어 controller -> fetch에서 JavaScriptSerializer.Serialize(결과 데이터)를 할 때
Json.parse() 처리에서 에러가 발생하여 화면에 정상적으로 데이터가 출력되지 않았기 때문에 작성함.
- Total
- Today
- Yesterday
- REVOKE
- in/out/ref 예제
- pl/sql
- PL/SQL 실행문
- TrimEnd
- rollback
- 참조전달
- DECLARE절
- commit
- 동기통신
- PL/SQL 예외처리문
- vba
- NLog
- in/out/ref 공통점
- BEGIN절
- 유틸리티
- 유틸리티에러
- USER_SYS_PRIVS
- 후나빙
- DBA_SYS_PRIVS
- grant
- Oracle
- VB.Net
- in/out/ref 차이점
- C#
- EXCEPTION절
- 시간차이
- 에러
- 초기화파라미터파일
- in/out/ref
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |