Skip to content

Loss of precision on Float fields with many digits #3479

@snake575

Description

@snake575

Bug description

Hi, I found a problem similar to #2903, in this case, the Float stored on the database is 1.59283191 but the value returned is 1.5928319100000001

How to reproduce

Prisma schema:

datasource db {
  provider = "postgresql"
  url      = env("DATABASE_URL")
}

generator client {
  provider = "prisma-client-js"
}

model Transaction {
  id       Int    @id @default(autoincrement())
  amount   Float
}

Mutation:

const transaction = await prisma.transaction.create({
  data: {
    amount: 1.59283191,
  },
})
console.log({ transaction })

Returns wrong amount:

{ transaction: { id: 1, amount: 1.5928319100000001 } }

Expected behavior

{ transaction: { id: 1, amount: 1.59283191 } }

Environment & setup

  • OS: Debian 11 (WSL2)
  • Database: Postgres 12.4
  • Node.js version: v14.5.0
  • Prisma version:
@prisma/cli          : 2.6.0-dev.58
Current platform     : debian-openssl-1.1.x
Query Engine         : query-engine 650b5d0348ec38ae61e1e7db69bb54808418ede4 (at node_modules/@prisma/cli/query-engine-debian-openssl-1.1.x)
Migration Engine     : migration-engine-cli 650b5d0348ec38ae61e1e7db69bb54808418ede4 (at node_modules/@prisma/cli/migration-engine-debian-openssl-1.1.x)
Introspection Engine : introspection-core 650b5d0348ec38ae61e1e7db69bb54808418ede4 (at node_modules/@prisma/cli/introspection-engine-debian-openssl-1.1.x)
Format Binary        : prisma-fmt 650b5d0348ec38ae61e1e7db69bb54808418ede4 (at node_modules/@prisma/cli/prisma-fmt-debian-openssl-1.1.x)

Metadata

Metadata

Assignees

Labels

Type

No type

Projects

No projects

Milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions