codestates / codestates/withpuppy

[❗️Error] 12/8 최우철 sequelize가 소수점을 떼버리고 저장하는 이유

Open
#62 0 comments 0 reactions 1 assignee Claimed by @chltjdrhd777 View on GitHub
Error
Dominant language
JavaScript
Stars
0
Forks
3
PR merge metrics
No merged PRs in 30d

Description

> 해결된 에러라면 라벨에 'Done'
> 미해결된 에러라면 라벨을 'Progress'

### what error
- 더미데이터를 저장하는 작업을 진행 중, 계속해서 테이블에 정수만 남기고 저장되는 것을 확인함
---

### error message
스크린샷 2021-12-08 오후 7 08 24

---

### how to reslove

- 해당 문제는 내가 mysql을 쓰면서 데이터타입에 대한 깊은 고려를 하지 않았다는 부분에서 일어남
- 여지껏 model의 타입을 설정할 때, 거의 반 무의식적으로 숫자면 DataTypes.INTEGER 라고 지정해뒀었는데, mysql은 몹시 똑똑해서 정수타입이라고 해두니까 진짜로 정수만 남기고 저장함

스크린샷 2021-12-08 오후 7 17 01

- 따라서 이 타입을 바꾸는 것이 필요한데, 여기서 조금 소수와 관련된 내용을 구분하자면

> a. DECIMAL(M, D)
고정소수점을 표현하는 방식으로, 정확한 소수값을 표현하는 것을 주력함
M은 소숫점 자리를 포함한 전체의 길이를 뜻하며, D는 정수 부분을 뗀 소숫점 이하의 자릿수를 뜻함
D 가 0이면 소숫점이 없다는 뜻임(INTEGER과 같아짐)

> b. FLOAT(p)
부동 소숫점을 표현하는 방식으로, 소수에 대해 대략적인 값의 표현을 위해 쓰임
p 가 0~24 사이의 숫자면 4바이트로 표현되는 소수로 계산되며, 25~53 사이의 값을 가질때에는 8바이트로 표현되는 DOUBLE 타입으로 계산됨

> 번외. BIT(b)
말 그대로 0과 1의 값을 가지는 비트의 크기를 지정하는 것이며 b는 최대 64까지 지정 가능
---

### result
> 원하는 결과를 얻을 수 있었음

스크린샷 2021-12-08 오후 7 20 14

스크린샷 2021-12-08 오후 7 20 23
### reference

[mysql 숫자타입](https://velog.io/@dnjscksdn98/Database-%EB%8D%B0%EC%9D%B4%ED%84%B0-%ED%83%80%EC%9E%85)

Contributor guide

No contributing guide indexed for this repository

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.