The \llceil, \rrceil, \llfloor and \rrfloor symbols of stmaryrd are available at a single size.
You can define macros \dceil and \dfloor that take an argument; with \dceil* automatically extensible delimiters are produced and a numeric optional argument adds some negative kern between the two \lceil or \rceil that are used. Without the *, the optional argument can be \big, \Big, \bigg or \Bigg. The same for \dfloor.
\documentclass{article}
\usepackage{amsmath,xparse,stmaryrd}
\ExplSyntaxOn
\NewDocumentCommand{\dceil}{sO{0}m}
{
\IfBooleanTF{#1}
{
\spiros_ceilfloor_ext:nnnn { #2 } { #3 } { \lceil } { \rceil }
}
{
\spiros_ceilfloor:nnnn { #2 } { #3 } { \lceil } { \rceil }
}
}
\NewDocumentCommand{\dfloor}{sO{0}m}
{
\IfBooleanTF{#1}
{
\spiros_ceilfloor_ext:nnnn { #2 } { #3 } { \lfloor } { \rfloor }
}
{
\spiros_ceilfloor:nnnn { #2 } { #3 } { \lfloor } { \rfloor }
}
}
\cs_new_protected:Npn \spiros_ceilfloor_ext:nnnn #1 #2 #3 #4
{
\left#3
\mkern-\muskip_eval:n { 4.5mu + #1mu }
\left#3
#2
\right#4
\mkern-\muskip_eval:n { 4.5mu + #1mu }
\right#4
}
\cs_new_protected:Npn \spiros_ceilfloor:nnnn #1 #2 #3 #4
{
\mathopen{\str_if_eq:nnF { #1 } { 0 } { #1 }#3}
\mkern\spiros_kern:n { #1 }
\mathopen{\str_if_eq:nnF { #1 } { 0 } { #1 }#3}
#2
\mathclose{\str_if_eq:nnF { #1 } { 0 } { #1 }#4}
\mkern\spiros_kern:n { #1 }
\mathclose{\str_if_eq:nnF { #1 } { 0 } { #1 }#4}
}
\cs_new:Npn \spiros_kern:n #1
{
\str_case:nnF { #1 }
{
{ \big }{ -4.5mu }
{ \Big }{ -5.5mu }
{ \bigg }{ -6.5mu }
{ \Bigg }{ -7.5mu }
}
{ -4.5mu }
}
\ExplSyntaxOff
\begin{document}
\[
\llceil x\rrceil\\
\dceil*{x} \quad
\dceil*{\frac{x}{2}}\quad
\dceil*[1]{\frac{x}{2}}\quad
\dceil*[3]{\frac{\dfrac{x}{2}}{\dfrac{y}{3}}}
\]
\[
\dceil{x}\quad
\dceil[\big]{x}\quad
\dceil[\Big]{x}\quad
\dceil[\bigg]{x}\quad
\dceil[\Bigg]{x}
\]
\[
\llfloor x\rrfloor\\
\dfloor*{x} \quad
\dfloor*{\frac{x}{2}}\quad
\dfloor*[1]{\frac{x}{2}}\quad
\dfloor*[3]{\frac{\dfrac{x}{2}}{\dfrac{y}{3}}}
\]
\[
\dfloor{x}\quad
\dfloor[\big]{x}\quad
\dfloor[\Big]{x}\quad
\dfloor[\bigg]{x}\quad
\dfloor[\Bigg]{x}
\]
\end{document}
The result seems acceptable without correction in the case of \dceil* and \dfloor* up to a certain size (corresponding to \bigg); after it a correction is needed.
Maybe the correction could be made automatic based on the size of the mandatory argument.
