If you use L*A*B* in 16 bit color, you can use non-integer values. I did a little test. The below script will set the foreground color and read spot in an open image back to the ESTK console. I can get non integer values.
#target photoshop
var doc = activeDocument;
var x=50;
var y=40;
var foregroundC = new SolidColor();
foregroundC.lab.l =80.8888;
foregroundC.lab.a = 60.555;
foregroundC.lab.b = -33.444;
foregroundColor = foregroundC;
fillForeground ()
$.writeln(getColor (x, y,'lab'));
//alert(colorArray[0]+'\n'+colorArray[1]+'\n'+colorArray[2])
function getColor(xLoc, yLoc, cSpace){
doc.colorSamplers.removeAll();
var locArray = [xLoc,yLoc];
var sColor = doc.colorSamplers.add(locArray);
switch(cSpace){
case 'rgb':
var colorArray = [sColor.color.rgb.red, sColor.color.rgb.green,sColor.color.rgb.blue];
break;
case 'cmyk':
var colorArray = [sColor.color.cmyk.cyan, sColor.color.cmyk.magenta,sColor.color.cmyk.yellow,sColor.color.cmyk.black];
break;
case 'lab':
var colorArray = [sColor.color.lab.l, sColor.color.lab.a,sColor.color.lab.b];
break;
case 'hsb':
var colorArray = [sColor.color.hsb.hue, sColor.color.hsb.saturation,sColor.color.hsb.brightness];
break;
};//end switch
return colorArray;
}
function fillForeground(){
var idFl = charIDToTypeID( "Fl " );
var desc2 = new ActionDescriptor();
var idUsng = charIDToTypeID( "Usng" );
var idFlCn = charIDToTypeID( "FlCn" );
var idFrgC = charIDToTypeID( "FrgC" );
desc2.putEnumerated( idUsng, idFlCn, idFrgC );
var idOpct = charIDToTypeID( "Opct" );
var idPrc = charIDToTypeID( "#Prc" );
desc2.putUnitDouble( idOpct, idPrc, 100.000000 );
var idMd = charIDToTypeID( "Md " );
var idBlnM = charIDToTypeID( "BlnM" );
var idNrml = charIDToTypeID( "Nrml" );
desc2.putEnumerated( idMd, idBlnM, idNrml );
executeAction( idFl, desc2, DialogModes.NO );
}