2016-12-23 5 views
1

私は非常に簡単なコードです。私は、2つの日付の間の違いが否定的であるかどうかを調べたいと考えています。問題は価値を得ることではなく、それが否定的であるかどうかをチェックすることにあります。ここに私のコードは次のとおりです。!val!バッチ内の負の小数の扱い

if !val! LSS 0 (
     echo value is !val! 
     echo value is less than zero - SLA breached! 
    ) else (
     echo value is !val! 
     echo value is greater than zero - SLA not breached. 
    ) 

値は次のとおりです。

-0.9513888888888888888888888888888888888889   
63.06736111111111111111111111111111111111 
-1.09722222222222222222222222222222222222 
-1.19236111111111111111111111111111111111 

まず2つの結果が罰金ではない - 彼らは、正と負のだ検出には問題。次の2つのバッチは、それらが1つよりも大きいと言っています!結果は次のとおりです。

value is -.95138889 
value is less than zero - SLA breached 

value is 63.0673611 
value is greater than zero - SLA not breached. 

value is -1.1923611 
value is greater than zero - SLA not breached. 

value is -1.0972222 
value is greater than zero - SLA not breached. 

どこが間違っていますか?

+2

バッチは浮動小数点数では機能しません – npocmaka

+0

これで、ここでpowershellを活用する必要があります。ありがとうnpocmaka! – mathB

答えて

2

私はこれにアプローチする別の方法を発見した -

if "!val:~0,1!"=="-" (
    echo value is !val! 
    echo value is less than zero - SLA breached! 
    ) else (
    echo value is !val! 
    echo value is greater than zero - SLA not breached. 
    ) 

ここでの結果です:

value is 63.0673611 
value is greater than zero - SLA not breached. 

value is -.95138889 
value is less than zero - SLA breached 

value is -1.0972222 
value is less than zero - SLA breached 

value is -1.1923611 
value is less than zero - SLA breached 

が、これは誰かに役立ちます願っています!

+0

値「0」または「0.000」または「+ 0.0」または「-.0」は正しく処理されませんが、if!val:。=! EQU 0'はそれを処理する必要があります... – aschipfl

+0

私の結果は+0.0を生成せず、-0は正常に動作することを確認しました(slaが破られました)。私が使用するロジックは、0または0.000を正(slaではない)とみなすことはOKです:-) Thanks @aschipfl! – mathB

関連する問題