Sayıyı 2 ondalık basamağa formatla


154

Orijinal sayıyı yuvarlamadan, 2 ondalık basamaklı bir sayıyı nasıl çıkarabileceğimi bilmek istiyorum.

Örneğin:

2229,999 -> 2229,99

Zaten denedim:

FORMAT(2229.999, 2)
CONVERT(2229.999, DECIMAL(4,2))

kısaltmak için komutları kullanmaya çalıştığınız anlaşılıyor. Neden sadece yerleşik işlevselliği kullanmıyorsunuz?
— Fallenreaper

Ondalık ondalık sayıya ihtiyacınız yok DECIMAL(6,2)). 6- Kesinlik (toplam basamak sayısı) ve 2 ondalık basamaktan sonraki basamak sayısıdır?
— user5249203

Yanıtlar:



364

2 ondalık basamağa numarayı biçimlendirme zaman iki seçeneğiniz var TRUNCATEve ROUND. TRUNCATEFonksiyon arıyorsunuz .

Örnekler:

Yuvarlama olmadan:

TRUNCATE(0.166, 2)
-- will be evaluated to 0.16

TRUNCATE(0.164, 2)
-- will be evaluated to 0.16

dokümanlar: http://www.w3resource.com/mysql/mathematical-functions/mysql-truncate-function.php

Yuvarlama ile:

ROUND(0.166, 2)
-- will be evaluated to 0.17

ROUND(0.164, 2)
-- will be evaluated to 0.16

dokümanlar: http://www.w3resource.com/mysql/mathematical-functions/mysql-round-function.php


2
truncatekesilmiş sayılar istediğinizde sayıları biçimlendirmek için kullanmalısınız . sorusunda, yapmak istediği şeyin bu olduğunu açıkça belirtti. yuvarlamanın birçok yolu vardır (zemin, tavan, sıfırdan uzağa, sıfıra doğru, yarı yukarı, yarı aşağı, yarım çift). farklı bağlamlarda uygundurlar.
— Kip

16
evet, ama gördüğüm gibi birçok insan cevabımın yararlı olduğunu düşünüyor ya da YUVARLA komutu ararken bu soruyu bulmuş olabilirler. Olduğu gibi bırakacağım.
— jmarceli

"Sayıları biçimlendirmek için TRUNCATE'i kullanmamalısınız çünkü kesik basamakları kaybedersiniz" => İşte bu kesilme noktası ... Math ile 0.17'yi nasıl almamız gerektiğini anlamıyorum. Cevabınız programlama örnekleri için mükemmel, ancak çok kapsamlı değil.
— Benoit Duffez

2
Daha önce dediğim gibi. Ben bu soru için doğru bir cevap olmadığını biliyorum ama insanlar beğenme eğilimindedir :) Belki de ROUNDişlevi arayan biri için arama sonucu olabilir soru başlığı nedeniyle .
— jmarceli

O zaman tamir etmelisin. Hala herkes için yararlı olacağım ve % 100 doğru olacak. Kazan-kazan :)
— Benoit Duffez

14

CAST(2229.999 AS DECIMAL(6,2)) 2 ondalık basamakla ondalık sayı almaya ne dersiniz?


4
Sanırım döküm demek istiyorsun (2229.999 ondalık olarak (4,2))
— Iroh Amca

@ UncleIroh, Hayır, aslında demek istediğidir convert(2229.999 as decimal(4,2)).
— Pacerier

3
@Pacerier - Her ikisi de teknik olarak çalışır. Bununla birlikte, dönüştürme biçimi virgülle dönüştürmek (2229.999, ondalık (4,2)) şeklindedir, bu yüzden muhtemelen onun için yaptığı şey buydu.
— Iroh Amca

@ AmcaIroh, Ah evet, yukarıdaki yazım hatası. Hakkında konuşuyordum convert(2229.999, decimal(4,2)).
— Pacerier

4
CAST (2229.999 AS DECIMAL (4,2)) size 99.99 verecektir. DECIMAL, ondalık basamağın solundaki 2 dahil maksimum basamak sayısıdır . CAST (2229.99 AS DECIMAL (6,2)) size 2230.00 verecek
— russjohnson09


0

Ben örnek olarak bu şekilde kullandım:

CAST(vAvgMaterialUnitCost.`avgUnitCost` AS DECIMAL(11,2)) * woMaterials.`qtyUsed` AS materialCost

0

Ondalık olarak göster ifnull seçeneğini seçin (biçim (100.00, 1, 'en_US'), 0) 100.0

Yüzde Olarak Göster Concat (ifnull (biçim (100.00, 0, 'en_US'), 0), '%')% 100 olarak göster

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.