A post processing way would be more automatic.
Define below functions
ClearAll[changeTicks, changeTicksToScientificForm];
changeTicks[plot_, tickStringTransformFunc_,
opts : OptionsPattern[]] := Module[{frameTicks, ticks},
frameTicks = Quiet@AbsoluteOptions[plot, FrameTicks];
ticks = Quiet@AbsoluteOptions[plot, Ticks];
Show[plot
/. (FrameTicks -> _) ->
Quiet@First[
frameTicks /.
x_String :> If[x === "", "", tickStringTransformFunc@x]]
/. (Ticks -> _) ->
Quiet@First[
ticks /.
x_String :> If[x === "", "", tickStringTransformFunc@x]],
opts]
];
changeTicksToScientificForm[plot_, opts : OptionsPattern[]] :=
Module[{},
changeTicks[plot, ScientificForm@N@ToExpression@# &, opts]
]
Now
p = RegionPlot[{Subscript[C, WW] + Subscript[C, BB] < 0}, {Subscript[
C, WW], -1.1*10^(-3),
1.1*10^(-3)}, {Subscript[C, BB], -1.1*10^(-3), 1.1*10^(-3)},
PlotPoints -> 50,
PlotRange -> {{-1.1*10^(-3), 1.1*10^(-3)}, {-1.1*10^(-3),
1.1*10^(-3)}}, ImageSize -> 450];
changeTicksToScientificForm@p
gives

changeTicksToScientificForm
suites for many other cases. Just apply it to the plots after they are generated. For examples
changeTicksToScientificForm@Plot[x^2, {x, 0, 1000}]
gives

changeTicksToScientificForm@
DensityPlot[x y, {x, -4, 4}, {y, -100, 100}]
gives

changeTicksToScientificForm@Plot3D[x y^2 , {x, -1, 1}, {y, -1, 100}]
gives

If you do not want to see small number becomes scientific notation, you can use for example ScientificNotationThreshold -> {-3, 3}
option for ScientificForm
in changeTicksToScientificForm
, then you get
