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.